procedure 错误,请教高手,已经看了3个小时了,,,,

zzzjaychung 2005-03-31 07:57:44
DECLARE @TableName NVARCHAR(255)
DECLARE @Text NVARCHAR(255)

DECLARE @FieldName NVARCHAR(255)
DECLARE @Counter INT

SET @TableName = 'test1'
SET @Text = 'N08HT'

为@FieldName附值 ,省略代码。。。

EXECUTE ( 'SELECT * FROM ' + @TableName + ' WHERE [' + @FieldName + '] = ' + @Text )--运行到此句报错:列名‘N08HT’无效

其中@FieldName是从数据库中抓到的一系列值,用在这里当列名
...全文
46 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzjaychung 2005-03-31
  • 打赏
  • 举报
回复
我后来改写了一下,不过是这样的:
EXECUTE ( 'SELECT * FROM ' + @TableName + ' WHERE [' + @FieldName + '] = ''' + @Text +'')

最后少了两个“'”

按 gzhughie(hughie) 的方法执行过了。
谢谢。

zzzjaychung 2005-03-31
  • 打赏
  • 举报
回复
结出的值 是:

SELECT * FROM test1 WHERE [N087M] = N087M
SELECT * FROM test1 WHERE [SB00V6] = N087M

可以在SQL里正常运行,但在PROCEDURE里调用就会出错。

@FIELD应该是三个值:[SB00V6] [N087M] [CheckOut]
但第三个FIELD没有给出来

[SB00V6] [N087M] [CheckOut] 这三个是栏位名,下面是数据
SB00V6 N087M CheckOut
SB00Y5 N08F7 CheckIn
SB00Y5 N08F7 CheckOut
SB00Y6 N08HS CheckIn
SB00Y6 N08HS CheckOut
SB00YG N08HW CheckIn
SB00YG N08HW CheckOut
gzhughie 2005-03-31
  • 打赏
  • 举报
回复
EXECUTE ( 'SELECT * FROM ' + @TableName + ' WHERE [' + @FieldName + '] = ''' + @Text +'''')

这样就可以了
szh3210 2005-03-31
  • 打赏
  • 举报
回复
先 print 'SELECT * FROM ' + @TableName + ' WHERE [' + @FieldName + '] = ' + @Text
这个看看

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧