Sql 用户存储的过程返回NULL——基础查询按计划工作

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 ( >

是的,这是另一个。标题几乎相同的问题不适用,或者我看不出两者之间的联系

我的usp如下所示:

>    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毫秒内就解决了它。是的。我现在把头伸进马桶冲水。马丁,你在瞄准镜上,很抱歉提供了错误的信息。。。旧习惯。