简体   繁体   English

需要帮助在 SQL Server 中调试此存储过程

[英]Need help debugging this stored procedure in SQL Server

I've been trying to create the stored procedure as below but I kept getting these errors:我一直在尝试创建如下存储过程,但我不断收到这些错误:

Msg 137, Level 15, State 1, Procedure PKG_BNLX5_INSERT_DMBATCHERRLOG, Line 164消息 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 164 行
Must declare the scalar variable "@V_ERR_REC".必须声明标量变量“@V_ERR_REC”。

Msg 137, Level 15, State 1, Procedure PKG_BNLX5_INSERT_DMBATCHERRLOG, Line 165消息 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 165 行
Must declare the scalar variable "@V_ERR_REC".必须声明标量变量“@V_ERR_REC”。

Msg 137, Level 15, State 1, Procedure PKG_BNLX5_INSERT_DMBATCHERRLOG, Line 166消息 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 166 行
Must declare the scalar variable "@V_ERR_REC".必须声明标量变量“@V_ERR_REC”。

Msg 137, Level 15, State 1, Procedure PKG_BNLX5_INSERT_DMBATCHERRLOG, Line 167消息 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 167 行
Must declare the scalar variable "@V_ERR_REC".必须声明标量变量“@V_ERR_REC”。
....... ......
Msg 102, Level 15, State 1, Procedure PKG_BNLX5_INSERT_DMBATCHERRLOG, Line 172消息 102,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 172 行
Incorrect syntax near '@V_ERR_REC'. '@V_ERR_REC' 附近的语法不正确。

Code:代码:

CREATE PROCEDURE "PKG_BNLX5_INSERT_DMBATCHERRLOG"
    (@IN_PROCNAME VARCHAR(4000),
     @IN_TARNAME VARCHAR(4000),
     @IN_CURSOR VARCHAR(4000),
     @IN_UNIQUE_NUMBER FLOAT,
     @IN_SQLCODE VARCHAR(4000),
     @IN_SQLERRM VARCHAR(4000),
     @IN_REMARK VARCHAR(4000)) 
AS
BEGIN
    SET NOCOUNT ON;

    SET @V_ERR_REC.PROCNAME      = @IN_PROCNAME;
    SET @V_ERR_REC.TARNAME       = @IN_TARNAME;
    SET @V_ERR_REC.CURSOR        = @IN_CURSOR;
    SET @V_ERR_REC.UNIQUE_NUMBER = @IN_UNIQUE_NUMBER;
    SET @V_ERR_REC.DATIME        = GETDATE();
    SET @V_ERR_REC.ERRCODE       = @IN_SQLCODE;
    SET @V_ERR_REC.ERRDESC       = @IN_SQLERRM;
    SET @V_ERR_REC.REMARK        = @IN_REMARK;

    INSERT INTO VM1DTA.DMBATCHERRLOG VALUES @V_ERR_REC;

    COMMIT;
END;

You didn't declare any of the variables as referenced in the error messages.您没有声明错误消息中引用的任何变量。 Additionally, it looks like you're trying to set all the parameters to some sort of table that doesn't exist?此外,您似乎正在尝试将所有参数设置为某种不存在的表? SQL Server variables don't really work like that. SQL Server 变量实际上并不是那样工作的。

Typically, this sort of thing would be done like通常,这种事情会像

DECLARE @V_ERR_REC.PROCNAME VARCHAR(4000) = @IN_PROCNAME

but this seems rather unnecessary based on the rest of your query.但根据您的其余查询,这似乎是不必要的。

You'd probably be better off just inserting the parameter values.您最好只插入参数值。

INSERT INTO VM1DTA.DMBATCHERRLOG 
VALUES (@IN_PROCNAME, @IN_TARNAME, @IN_CURSOR, @IN_UNIQUE_NUMBER, GETDATE(), @IN_SQLCODE, @IN_SQLERRM, @IN_REMARK)

However, you should also probably explicitly set which fields you're inserting these values into但是,您可能还应该明确设置要将这些值插入到哪些字段中

INSERT INTO VM1DTA.DMBATCHERRLOG(Value1, Value2,..ValueN)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM