存储过程中使用动态sql语句,执行时输入参数提示列名无效

inetfuture 2010-08-12 03:36:04
代码:

ALTER PROCEDURE proc_ExsitUserName
(
@userName nvarchar(12),
@table nvarchar(10),
@prefix nvarchar(10)
)
AS
DECLARE @sql nvarchar(MAX)
SET @sql='SELECT COUNT('+@prefix+'_userName) FROM '+@table+' WHERE '+@prefix+'_userName='+@userName
EXECUTE(@sql)
RETURN


总是提示 @userName的参数值 列名无效

正在运行 [dbo].[proc_ExsitUserName] ( @userName = 好, @table = pu_student, @prefix = s ).

列名 '好' 无效。
没有行受影响。
(返回 0 行)
@RETURN_VALUE = 0
完成 [dbo].[proc_ExsitUserName] 运行。

请高手指教该如何解决,在线等,谢谢

ps:userName 在数据中存的是 nvarchar(12)
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanzhi1984 2010-08-12
  • 打赏
  • 举报
回复

SET @sql='SELECT COUNT('+@prefix+'_userName) FROM '+@table+' WHERE '+@prefix+'_userName='+@userName
更改为:

SET @sql='SELECT COUNT('+@prefix+'_userName) FROM '+@table+' WHERE '+@prefix+'_userName='''+@userName+''''
inetfuture 2010-08-12
  • 打赏
  • 举报
回复
我晕,原来这样的,谢谢楼上^_^
百年树人 2010-08-12
  • 打赏
  • 举报
回复
ALTER PROCEDURE proc_ExsitUserName
(
@userName nvarchar(12),
@table nvarchar(10),
@prefix nvarchar(10)
)
AS
DECLARE @sql nvarchar(MAX)
SET @sql='SELECT COUNT('+@prefix+'_userName) FROM '+@table+' WHERE '+@prefix+'_userName='''+@userName+''''
EXECUTE(@sql)
RETURN

go
SQLCenter 2010-08-12
  • 打赏
  • 举报
回复
SET @sql='SELECT COUNT('+@prefix+'_userName) FROM '+@table+' WHERE '+@prefix+'_userName='''+@userName+''''

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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