【发布时间】:2017-08-10 11:15:41
【问题描述】:
我是存储过程的新手,以前没有在我的项目中使用过它们。我已经创建了我的第一个程序,但它没有返回预期的结果。
过程创建如下-
CREATE PROCEDURE GetRetirementDetails @DOB DATE, @Gender VARCHAR(10)
AS
DECLARE @DateRet DATE,
@AgeRet DECIMAL(18,2)
SELECT @DateRet = [DateRet], @AgeRet = [AgeRet]
FROM [State]
WHERE [From] <= @DOB
AND [To] >= @DOB
AND (Gender = @Gender OR Gender = 'Both')
我正在使用以下语句执行该过程-
DECLARE @DateRet DATE,
@AgeRet DECIMAL(18,2),
@DOB DATE,
@Gender VARCHAR(10)
SET @DOB = '1975-10-10'
SET @Gender = 'Male'
EXECUTE GetRetirementDetails @DOB, @Gender
SELECT @DateRet, @AgeRet
返回的结果为NULL,NULL
但是,当我运行以下语句时,即手动输入参数的过程,我得到了所需的结果。
SELECT [DateRet], [AgeRet]
FROM [State]
WHERE [From] <= '1975-10-10'
AND [To] >= '1975-10-10'
AND (Gender = 'Male' OR Gender = 'Both')
所需输出为 NULL,67.00
我确定我的错误是基本的,但我很难看到它给出的内容我以前没有使用过存储过程。任何帮助将不胜感激。
【问题讨论】:
-
标记您正在使用的 dbms。该代码是特定于产品的。
-
您在过程范围内设置变量,而不是在调用脚本的范围内。因此,您选择的变量从未设置过。
标签: sql sql-server stored-procedures ssms