我正在使用动态 SQL 编写存储过程。
在我的程序中,我说了大约 10 个类似列的表。
例如,如果我考虑Designation
&Department
表,Designation
表有以下列:
Designation, Code, EntryBy, EntryOn, ModifiedBy, ModifiedOn
和Department
表有这些列:
Department, Code, EntryBy, EntryOn, ModifiedBy, ModifiedOn
同样,我还有其他八张桌子。
在我的存储过程中,我需要更新数据并将数据插入所有表中。因此,我没有为每个表编写更新和插入语句,而是使用一个存储过程,它接受表名作为参数并检查该行是否已存在于该表中。
如果该行存在,则该记录将被更新,否则该记录将被插入到相应的表中。
ALTER PROC UpdateMasterItems
(
@MasterTypeTmp varchar(50),
@NameTmp varchar(50),
@CodeTmp varchar(10))
AS
BEGIN
DECLARE @CntTmp numeric(2,0)
EXEC('select count(*)' + @CntTmp + ' from ' + @MasterTypeTmp + ' where ' + @MasterTypeTmp + ' = ' + @NameTmp)
IF(@CntTmp > 1)
BEGIN
EXEC('UPDATE ' + @MasterTypeTmp + ' SET ' + 'Code = ' + @CodeTmp + ', ModifiedBy = CURRENT_USER, MOdifiedOn = CURRENT_TIMESTAMP WHERE' + @MasterTypeTmp + ' = ' + @NameTmp)
RETURN 10
END
ELSE
BEGIN
EXEC('INSERT INTO ' + @MasterTypeTmp + '(' + @MasterTypeTmp + ', Code, EntryBy, EntryOn, ModifiedBy, ModifiedOn ) VALUES (' + @NameTmp + ',' + @CodeTmp + ',' + 'CURRENT_USER, CURRENT_TIMESTAMP, CURRENT_USER, CURRENT_TIMESTAMP )')
RETURN 11
END
END
表名在哪里@MasterTypeTmp
(可以是Department
/ Designation
.....)
执行过程时出现错误:
执行语句:
EXEC UpdateMasterItems 'Designation', 'TestName', 'TestCode'
错误陈述:
列名“TestName”无效。
列名“TestCode”无效。
但是TestName
&TestCode
不是列名。这些是列的值。请让我知道我的动态查询是否错误或问题出在哪里!
提前致谢
穆尼卡