存储过程 - 将查询存储到参数中

时间:2014-03-31 13:48:43

标签: sql-server tsql stored-procedures parameters

我正在尝试将查询存储到变量中,这就是我正在做的事情:

@check int = [return_code] FROM [dbo].[RESULT] WHERE [code_test] = 'T3005_das'

返回代码字段仅包含0或1值。当我试图这样做时,这是我得到的错误消息:

  

Msg 156,Level 15,State 1,Procedure V116_T3005,Line 7
  关键字“FROM”附近的语法不正确。

我真的不明白为什么它不能正常工作,因为我在网上跟踪了代码示例。

有什么想法吗?

编辑:这是我编辑过的程序:

CREATE PROCEDURE V116_T3005
    DECLARE @check int 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT @check = [code_retour] FROM [dbo].[RESULTAT] WHERE [code_test] = 'T3005_das'
    --logical code
END

现在我收到了这些错误:

  

Msg 156,Level 15,State 1,Procedure V116_T3005,Line 7
  关键字'DECLARE'附近的语法不正确。

     

Msg 156,Level 15,State 1,Procedure V116_T3005,Line 9
  关键字“AS”附近的语法不正确。

2 个答案:

答案 0 :(得分:1)

declare @check int

select @check = [return_code] 
FROM [dbo].[RESULT] 
WHERE [code_test] = 'T3005_das'

答案 1 :(得分:0)

如果@check是输出参数,则应省略单词declare。如果不是,则应在 BEGIN之后声明,如果是,我建议:
declare @check integer = (select [code_retour] FROM [dbo].[RESULTAT] WHERE [code_test] = 'T3005_das');
顺便说一句,您确定select [code_retour] FROM [dbo].[RESULTAT] WHERE [code_test] = 'T3005_das' 总是会返回一个值吗?否则将引发错误。