傳遞一個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