传递一个ID:
这里的好处是可以简化存储过程的所有接口。
这使得编码更容易。如果您最终从多个地方调用SP,则只需使用单个参数,而不是加载并传递多个参数。
传递n
变量:
当年这里的好处就是你 '脱钩' 从保持表的存储过程。
这意味着您可以直接调用存储过程,而不需要表中有任何数据。这可能是在未来有用,如果数据到达一个新的方式,或进行单元测试等
哪一个是最好:
我不认为有对此的直接回答,更多的是偏好和意见。
我的意见是,紧密耦合的东西越好越好。面对变化,它更加灵活。
我会这样做的方式如下...
CREATE PROCEDURE main_by_variable @v1 INT, @v2 INT, ...
BEGIN
EXEC sub_part_1 @v1, @v3
EXEC sub_part_2 @v2
EXEC sub_part_3 @v2, @v3
...
END
CREATE PROCEDURE main_by_id @id INT AS
BEGIN
DECLARE
@v1 INT,
@v2 INT,
...
SELECT
@v1 = field1,
@v2 = field2
FROM
holding_table
WHERE
id = @id
EXEC main_by_variable @v1, @v2, ...
END
GO;
通过具有main_by_variable
过程中,你有felxibility试验等所有的子过程,而实际上不必输入任何数据到保持台。而且这种灵活性也是子程序的一部分。
但是,为了方便起见,您可能会发现使用main_by_id
更整齐。由于这只是main_by_variable的一个包装,所以你只需要在流程中封装一个步骤(从表中获取数据)。
它还允许您在数据收集部分周围进行事务处理,并将数据从表格中删除。或许多其他选项。它很灵活,我喜欢灵活。
CommonImport表只是一个保存表。进入SP的唯一变量值是CommonImport表中的值。 – ediblecode
顺便说一句,为什么你需要7个独立的程序来处理单个表?他们在做什么? – sll
我从CSV文件中导入数据,每一行都会被检查并验证,然后放入CommonImport表中。 这个数据然后被导入到我们的现场系统中,特别是七个不同的表格,即财产,存款,房东,房客等 因此有七个程序从CommonImport表中取得相关信息,然后插入相关表在现场。 此外,决定你的方法是最好的参数,因为这个SP可能在CommonImport不是数据源的其他项目中使用。所以谢谢 – ediblecode