我有一个Web应用程序,我一直在手动加载数据(一些SQL插入语句)用于测试目的。所以每次我加载不同值的数据。我想创建一个Stored Procedure
,但即使在存储过程中,无论是否正在加载测试数据,都必须更改值。不确定我是否正在思考正确的方法。
例如,这就是我现在所拥有的:
INSERT INTO DOCUMENT_SET (DOCUMENT_SET_TRANSACTION_ID, MDATA_ATTRB, MDATA_VALUE, CREATED_TIME, LAST_MOD_TIME, ISACTIVE) VALUES
(212019, 'SOURCE', 'M1', getDate(), getDate(), 1);
所以我将上面的脚本插入大约10次,并为一个事务使用不同的值。对于另一个事务,我必须再次使用不同的值插入10次。
现在,如果我创建一个存储过程:
Create Procedure Transaction
As
Begin
INSERT INTO esg.DOCUMENT_SET_TRANS_MDATA (DOCUMENT_SET_TRANSACTION_ID, MDATA_ATTRB, MDATA_VALUE, CREATED_TIME, LAST_MOD_TIME, ISACTIVE) VALUES
(212019, 'SOURCE', 'M1', getDate(), getDate(), 1);
9 more times with different values for one transaction
End
因此,对于另一个交易,有人必须改变价值,然后在这种情况下编写程序有什么好处?
由于
答案 0 :(得分:2)
存储过程可以接受输入参数。
Create Procedure [Transaction]
@id int,
@attrb varchar(10),
...
As
Begin
INSERT INTO esg.DOCUMENT_SET_TRANS_MDATA
(DOCUMENT_SET_TRANSACTION_ID, MDATA_ATTRB, MDATA_VALUE, CREATED_TIME, LAST_MOD_TIME, ISACTIVE)
VALUES
(@id, @attrb, ...);
...
然后,当您调用该程序时,
EXEC [Transaction] @id = 212019, @attrb = 'source', ...