我一直在尝试创建如下存储过程,但不断收到这些错误:
Msg 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 164
行 必须声明标量变量"@V_ERR_REC"。Msg 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 165
行 必须声明标量变量"@V_ERR_REC"。Msg 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 166
行 必须声明标量变量"@V_ERR_REC"。Msg 137,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 167
行 必须声明标量变量"@V_ERR_REC"。
.......
Msg 102,级别 15,状态 1,过程 PKG_BNLX5_INSERT_DMBATCHERRLOG,第 172
行 "@V_ERR_REC"附近的语法不正确。
法典:
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;
您没有声明错误消息中引用的任何变量。 此外,看起来您正在尝试将所有参数设置为某种不存在的表?SQL Server变量并不是那样工作的。
通常,这种事情会像
DECLARE @V_ERR_REC.PROCNAME VARCHAR(4000) = @IN_PROCNAME
但根据您的其余查询,这似乎是不必要的。
最好只插入参数值。
INSERT INTO VM1DTA.DMBATCHERRLOG
VALUES (@IN_PROCNAME, @IN_TARNAME, @IN_CURSOR, @IN_UNIQUE_NUMBER, GETDATE(), @IN_SQLCODE, @IN_SQLERRM, @IN_REMARK)
但是,您可能还应该显式设置将这些值插入到哪些字段中
INSERT INTO VM1DTA.DMBATCHERRLOG(Value1, Value2,..ValueN)