IF (@SP_ARGUMENT IS NULL)
SET @SP_ARGUMENT = (SELECT TOP(1) ID FROM TEST_TABLE)
SELECT @SP_ARGUMENT AS ARGUMENT_VAL
以上是我存储过程的代码片段。参数赋值不起作用?
但是,当我发送sp_argument为空,我希望它使用TEST_TABLE的第一个ID为下面的进一步查询,但不工作。我在这里做错了什么?
请帮忙。
IF (@SP_ARGUMENT IS NULL)
SET @SP_ARGUMENT = (SELECT TOP(1) ID FROM TEST_TABLE)
SELECT @SP_ARGUMENT AS ARGUMENT_VAL
以上是我存储过程的代码片段。参数赋值不起作用?
但是,当我发送sp_argument为空,我希望它使用TEST_TABLE的第一个ID为下面的进一步查询,但不工作。我在这里做错了什么?
请帮忙。
你可以使用ISNULL做到这一点:
Set @SP_ARGUMENT = IsNull(@SP_ARGUMENT, (SELECT TOP(1) ID FROM TEST_TABLE))
SELECT @SP_ARGUMENT AS ARGUMENT_VAL
'COALESCE'也可以。 – 2011-04-08 12:39:24
为了正确控制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
不一定,虽然风格很好。当您有多个语句时,您只需要'BEGIN..END',请参阅http://msdn.microsoft.com/zh-cn/library/aa933214(v=SQL.80).aspx这不应该是原因的错误。 – 2011-04-08 08:44:39
哎呀对不起,我错过了开始结束......问题是与任务不工作! – NSN 2011-04-08 09:10:42
如果您发布的代码,XML或数据样本,** **请在高亮文本编辑器的线,然后单击“代码示例“编辑器工具栏上的按钮(”{}“),以精确地格式化和语法突出显示它! – 2011-04-08 08:28:56
当你说不工作时,你能告诉我们什么是确切的错误吗?你看到了什么输出?你如何调用Proc?理解EXEC MYPROC'NULL'&EXEC MYPROC NULL是两个不同的语句 – 2011-04-08 08:33:01
问题是预期的预期不工作,它仍然是空的,并且Begin End也是我的代码的很大一部分,在上面错过了它代码片段。对不起,格式不好,我第一次在这里发布。 – NSN 2011-04-08 09:11:51