在存储过程中的“SET”关键字附近获取错误

时间:2016-08-12 09:21:22

标签: sql-server stored-procedures syntax-error

我创建了一个存储过程,但是在“SET”关键字附近出现错误:

  

消息156,级别15,状态1,程序[] usp_chkuseridpwd],第17行
  关键字“set”附近的语法不正确。
  'set'附近的语法不正确,期待变量。

我的代码:

alter procedure [usp_chkuseridpwd]
as
begin
    declare 
        /*variable declaration */
        @sql as varchar(max),
        @tblname varchar(max),
        @user_name varchar(max),
        @user_password varchar(max),
        @count int,
        @passwd as varchar(max),

    set @sql = 'select COUNT(*) from user_master where USER_NAME like '+@user_name+' and pasword like '+@user_password+''
    exec(@sql)
end

2 个答案:

答案 0 :(得分:2)

String someString = "qwe"; MessageDigest messageDigest = MessageDigest.getInstance("MD5"); String checksum = new BigInteger(1, messageDigest.digest(someString.getBytes())).toString(16); System.out.println(checksum);

中有一个额外的逗号

删除逗号将解决您的问题。

<强>更新

这与错误无关。

但是,当您与@passwd as varchar(max),运算符一起使用时,可能需要包含'%'才能获得更相关的结果。使用通配符LIKE时,您需要传递确切的字符串才能获得结果。如果您知道用户名的部分字符串并想要获取所有记录,则需要'%'

所以存储过程将是:

'%'

答案 1 :(得分:0)

查询应为:

alter procedure [usp_chkuseridpwd]
as
begin
    declare 
        /*variable declaration */
        @sql as varchar(max),
        @tblname varchar(max),
        @user_name varchar(max),
        @user_password varchar(max),
        @count int,
        @passwd as varchar(max)

    set @sql = 'select COUNT(*) from user_master where USER_NAME like '+@user_name+' and pasword like '+@user_password+''
    exec(@sql)
end