Sql 用户存储的过程返回NULL——基础查询按计划工作
是的,这是另一个。标题几乎相同的问题不适用,或者我看不出两者之间的联系 我的usp如下所示:Sql 用户存储的过程返回NULL——基础查询按计划工作,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,是的,这是另一个。标题几乎相同的问题不适用,或者我看不出两者之间的联系 我的usp如下所示: > CREATE PROCEDURE uspHasItem > @sr_id INT, > @ActionableItem VARCHAR(1) OUTPUT > AS BEGIN > SELECT @ActionableItem = (CASE > WHEN EXISTS ( >
> CREATE PROCEDURE uspHasItem
> @sr_id INT,
> @ActionableItem VARCHAR(1) OUTPUT
> AS BEGIN
> SELECT @ActionableItem = (CASE
> WHEN EXISTS (
> SELECT stuff FROM here
> WHERE condition
> AND field = (
> SELECT MAX(something)
> FROM another_place
> WHERE field1 = @sr_id)
> )
> THEN '1'
> ELSE '0' END);
> END
> RETURN
我用习惯的方式称之为,阿福:
DECLARE @Actionable VARCHAR(1);
EXEC uspHasItem
@sr_id = 1222,
@ActionableItem = @Actionable;
SELECT @Actionable AS AI;
我可以验证输入值是否有效,不管我提供什么,不管输入值是什么——我的输出总是为NULL
现在,如果我拉出该查询并调整它,则从表中提供@sr_id值:
SELECT
SRT.SR_ID,
CASE
WHEN EXISTS (
SELECT stuff FROM here
WHERE condition
AND field = (
SELECT MAX(something)
FROM another_place
WHERE field1 = SRT.SR_ID)
)
THEN '1'
ELSE '0' END AS ACTIONABLE
FROM SRTABLE SRT;
我得到了我所期望的结果。我没有发现问题,也没有发现任何错误
怎么可能得不到任何值,我对usp的测试执行和SELECT语句在后面的实际问题是什么?建议?您是否忘记了输出
DECLARE @Actionable VARCHAR(1)
EXEC uspHasItem
@sr_id = 1222,
@ActionableItem = @Actionable output
SELECT @Actionable AS AI
当你运行你的进程时,不要把;在每行之后,这会打破范围,也会添加输出
DECLARE @Actionable VARCHAR(1)
EXEC uspHasItem
@sr_id = 1222,
@ActionableItem = @Actionable OUTPUT
SELECT @Actionable AS AI;
试着采取行动;分号不影响范围。不建议使用不带分号的终止语句。你们在大约4毫秒内就解决了它。是的。我现在把头伸进马桶冲水。马丁,你在瞄准镜上,很抱歉提供了错误的信息。。。旧习惯。