我创建了一个存储过程,但是在“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
答案 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