我试图选择select语句返回的行数,但是它返回0,否则如果我运行简单计数查询,则返回没有找到的记录为什么SP不能为我工作???
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetUser_Pwd
@EmplID char,
@EmplPwd varchar(50)
As
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
Declare @No_Rows int
Select No_Rows= count(*) from HrEmployee where EmplID = @EmplID AND PassWord = @EmplPwd
Return @No_Rows
END
GO
此返回0,
Exec GetUser_Pwd 1, 1234
返回1
select count(*) from HrEmployee where EmplID = 1 AND PassWord = 1234
答案 0 :(得分:1)
而不是RETURN @No_Rows
写SELECT @No_Rows
。
RETURN 语句用于函数。 对于存储过程,如果使用 OUTPUT 参数,则使用 RETURN 语句。
Read here关于如何从存储过程中检索结果
Declare @No_Rows int
Select @No_Rows= count(*) from HrEmployee where EmplID = @EmplID AND PassWord = @EmplPwd
Select @No_Rows
答案 1 :(得分:1)
您需要声明一个OUTPUT变量。试试这个:
CREATE PROCEDURE GetUser_Pwd
@EmplID char,
@EmplPwd varchar(50),
@No_Rows int OUTPUT
As
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Select @No_Rows= count(*)
from HrEmployee
where EmplID = @EmplID AND PassWord = @EmplPwd
RETURN
END
GO
现在,使用以下命令调用过程
-- Declare the variable to receive the output value of the procedure.
DECLARE @No_Rows int;
-- Execute the procedure and save the output value in the variable @No_Rows
EXECUTE GetUser_Pwd @EmpId = '1',@EmplPwd='1234',@No_Rows=@No_Rows OUTPUT;
-- Display the value returned by the procedure.
PRINT 'Number of rows matching the criteria is ' +
convert(varchar(10),@No_Rows);
GO
答案 2 :(得分:0)
创建程序GetUser_Pwd @EmplID char, @EmplPwd varchar(50)
作为
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
Declare @No_Rows int
Select @No_Rows= count(*) from HrEmployee where EmplID = @EmplID AND PassWord = @EmplPwd
Return @No_Rows
END 走 / 呼叫...... / DECLARE @x INT EXEC @x = GetUser_Pwd @ EmplID = 1,@ EmplPwd = 1 SELECT @x