注册 登录
编程论坛 SQL Server论坛

开头的 标识符 太长

tjuair 发布于 2007-01-02 19:54, 4733 次点击

我在编写存储过程时,sql语句过长,查询分析器报错显示:
开头的 标识符 太长。最大长度为 128。
请问各位高手,遇到这种情况该怎么办。
我的程序是个插入语句,由于是有选择性地插入,导致语句过长,所以语句不能变短。
还有就是语句中包含用变量表示的表名,所以只能用带双引号的语句的形式表示,不能直接写成。
请问用变量表示动态表名,是不是只有通过限定一个双引号括起来的语句才能实现啊,有没有什么别的方法。
这两方面一限制,我很难做了!!
我想了一下午了,也查了一些资料,都没找到好方法,请大家赐教!!!

6 回复
#2
tjuair2007-01-02 19:56
这个问题,我找了很长时间,也没解决,我觉得是很常见的问题,大家遇到都是怎么解决的啊,sql既然限制了语句的长度,应该有解决的方法阿。
我是在存储过程中进行编程的,参数中含有表名和各字段名
#3
棉花糖ONE2007-01-02 20:14
你把你存储过程的代码贴出来看看
#4
tjuair2007-01-02 20:25

if exists(select name from sysobjects
where name='cangku_in_' and type='p')
drop procedure cangku_in
go

CREATE PROCEDURE cangku_in
@BM char(40),@MCh char(40),@Shzm char(40),@CLFL char(40),
@RiQi smalldatetime,@ShiJian datetime,@GuiGe char(40),@DanWei char(4),
@DanJia float,@ShuLiang float,@CheDui char(40),@LuDui char(20),
@CangKu char(10),@WeiZhiHao char(10),@GongHuoShang char(40),
@ChanDi char(40),@PinPai char(40),@ChangJia char(40),@FPH char(40),
@name char(40)
AS
declare @sql nvarchar(4000)

set @sql="insert into "+@name+" (BM,MCh,Shzm,CLFL,RiQi,ShiJian,GuiGe,DanWei,DanJia,
ShuLiang,CheDui,LuDui,CangKu,WeiZhiHao,GongHuoShang,ChanDi,PinPai,ChangJia,FPH)
values(@BM,@MCh,@Shzm,@CLFL,@RiQi,@ShiJian,@GuiGe,@DanWei,@DanJia,
@ShuLiang,@CheDui,@LuDui,@CangKu,@WeiZhiHao,@GongHuoShang,@ChanDi,@PinPai,@ChangJia,@FPH)"

execute(@sql)
GO
是一个存储过程,其中name是个表名

#5
tjuair2007-01-02 20:44

版主,我还有救吗??
这种方法是不是行不通啊,还有没有别的实现思路

#6
棉花糖ONE2007-01-02 21:10
把双引号改成单引号
#7
bygg2007-01-02 23:59
if exists(select name from sysobjects
where name='cangku_in' and type='p')
drop procedure cangku_in
go
1