是的,这是另一个。标题几乎相同的问题不适用,或者我没有看到连接。
我的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
我以习惯的方式称呼它,AFAIK:
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;
我得到了我期望的结果。我没有看到问题,也没有收到任何错误。
如何才能获得任何值,并且我之后用SELECT语句测试执行usp,实际问题是什么?建议?
答案 0 :(得分:3)
你忘记了output
吗?
DECLARE @Actionable VARCHAR(1)
EXEC uspHasItem
@sr_id = 1222,
@ActionableItem = @Actionable output
SELECT @Actionable AS AI
答案 1 :(得分:-1)
当你运行你的过程时,不要放一个;在每一行之后,这会打破范围,同时添加OUTPUT
DECLARE @Actionable VARCHAR(1)
EXEC uspHasItem
@sr_id = 1222,
@ActionableItem = @Actionable OUTPUT
SELECT @Actionable AS AI;