一個PROC我有表名爲my_table
與此架構:撥打光標
+----+--------------------------+-----------------------------+--------------------+
| ID | name (4 possible values) | action (2 possible values) | sequence (1,2...n) |
+----+--------------------------+-----------------------------+--------------------+
我想創建一個存儲過程,可以根據從sequence
列的順序處理數據。此存儲過程應查看sequence
中的值,然後執行相應的存儲過程。目前我有8個獨立的存儲過程。
例如,如果seq = 1
則應執行存儲過程#1。 如果seq = 2
取決於name
和action
的值,它將轉到存儲過程#4。有8個可能的匹配。
這裏是我的嘗試:
SET NOCOUNT ON
DECLARE @name varchar(20), @action varchar(20), @ID int, @Seq varchar(20)
DECLARE ILOOP CURSOR FOR SELECT ID, Name, Action, Seq FROM my_table
OPEN ILOOP
FETCH NEXT FROM iloop INTO @ID, @name, @Action, @Seq
WHILE @@Fetch_Status = 0 BEGIN
SELECT * From my_table WHERE Name = case Name when 'provider'
then EXEC sp1
END
CLOSE ILOOP
DEALLOCATE ILOOP
RETURN
爲什麼,如果seq = 2,它不會去存儲過程2嗎? –
不,不一定,它取決於名稱和操作列。說只有當name = c和action = Y時它纔會進入proc2。 –
那麼你是否想弄清楚你的調用邏輯,或者如何讓存儲過程自己調用? –