参数分配不起作用?

时间:2011-04-08 08:24:34

标签: sql-server-2005 stored-procedures

IF (@SP_ARGUMENT IS NULL )

SET @SP_ARGUMENT = (SELECT TOP(1) ID FROM TEST_TABLE )

SELECT @SP_ARGUMENT AS ARGUMENT_VAL

以上是我存储过程的代码片段。

但是当我发送sp_argument为null时,我希望它使用TEST_TABLE中的第一个ID进行下面的进一步查询,但不能正常工作。我在这里做错了什么?

请帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用IsNull执行此操作:

Set @SP_ARGUMENT = IsNull(@SP_ARGUMENT, (SELECT TOP(1) ID FROM TEST_TABLE ))

SELECT @SP_ARGUMENT AS ARGUMENT_VAL 

答案 1 :(得分:0)

为了正确控制T-SQL命令的流程,您需要将SET语句包装在Begin/End statement中。

IF (@SP_ARGUMENT IS NULL )
BEGIN
SET @SP_ARGUMENT = (SELECT TOP(1) ID FROM TEST_TABLE )
END
SELECT @SP_ARGUMENT AS ARGUMENT_VAL