在存储过程中 'SET' 关键字附近出现错误
Getting error near 'SET' keyword in stored procedure
我创建了一个存储过程,但在 'SET' 关键字附近出现错误:
Msg 156, Level 15, State 1, Procedure []usp_chkuseridpwd], Line 17
Incorrect syntax near the keyword 'set'.
incorrect syntax near 'set', expecting variable.
我的代码:
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
您在 @passwd as varchar(max),
中多了一个逗号
删除逗号即可解决您的问题。
更新:
这与错误无关。
但是您可能需要在使用 with LIKE
运算符时包含 '%'
以获得更相关的结果。如果没有通配符 '%'
,您需要传递准确的字符串才能获得结果。如果您知道用户名的部分字符串并想获取所有记录,则需要此 '%'
因此存储过程将是:
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) -- removing the comma
-- Added % for the LIKE operator
SET @sql = 'SELECT COUNT(*) FROM user_master WHERE USER_NAME LIKE %' + @user_name + '% AND pasword LIKE %' + @user_password + '%'
EXEC(@sql)
END
查询应该是:
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
我创建了一个存储过程,但在 'SET' 关键字附近出现错误:
Msg 156, Level 15, State 1, Procedure []usp_chkuseridpwd], Line 17
Incorrect syntax near the keyword 'set'.
incorrect syntax near 'set', expecting variable.
我的代码:
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
您在 @passwd as varchar(max),
删除逗号即可解决您的问题。
更新:
这与错误无关。
但是您可能需要在使用 with LIKE
运算符时包含 '%'
以获得更相关的结果。如果没有通配符 '%'
,您需要传递准确的字符串才能获得结果。如果您知道用户名的部分字符串并想获取所有记录,则需要此 '%'
因此存储过程将是:
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) -- removing the comma
-- Added % for the LIKE operator
SET @sql = 'SELECT COUNT(*) FROM user_master WHERE USER_NAME LIKE %' + @user_name + '% AND pasword LIKE %' + @user_password + '%'
EXEC(@sql)
END
查询应该是:
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