【问题标题】:Stored procedure - Store query into parameter存储过程 - 将查询存储到参数中
【发布时间】:2014-05-10 21:29:05
【问题描述】:

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

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

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

消息 156,级别 15,状态 1,过程 V116_T3005,第 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

现在我收到这些错误:

消息 156,级别 15,状态 1,过程 V116_T3005,第 7 行
关键字“DECLARE”附近的语法不正确。

消息 156,级别 15,状态 1,过程 V116_T3005,第 9 行
关键字“AS”附近的语法不正确。

【问题讨论】:

  • 好像漏掉了SELECT这个词
  • 从您的存储过程中删除 Declare@check 是你的输出变量吗?

标签: sql-server tsql stored-procedures parameters


【解决方案1】:
declare @check int

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

【讨论】:

  • 感谢您的帮助。但是,我仍然遇到错误。你能检查我的编辑吗?
【解决方案2】:

如果@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'总是返回一个值吗?否则会报错。

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多