我有一個SQL存儲過程,需要使用不同的參數執行多次。是否有可能執行某種類似於數組或其他不同參數的數據結構執行多次的SQL腳本?對此有何想法?使用不同參數多次執行SQL查詢
回答
你可以使用遊標(但是否有可能調整你的代碼,嘗試YS's answer):
編輯:添加FAST_FORWARD按@ YS的建議
DECLARE @param INT
-- getting your parameter from the table
DECLARE curs CURSOR LOCAL FAST_FORWARD FOR
SELECT afield FROM atable WHERE ...
OPEN curs
FETCH NEXT FROM curs INTO @param
-- executing your stored procedure once for every value of your parameter
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC usp_stored_Procedure @param
FETCH NEXT FROM curs INTO @param
END
CLOSE curs
DEALLOCATE curs
如果光標是隻讀的,則可以考慮使用'FAST_FORWARD'來提高性能,並且您只能繼續前進。即:'DECLARE curs CURSOR LOCAL FAST_FORWARD FOR ...' – 2012-03-05 20:29:54
@YS:你是對的。感謝您的建議! – 2012-03-05 20:33:43
這實際上工作得很好。我需要處理我的T-SQL – SoftwareSavant 2012-03-05 20:43:31
我可能會重組該設計有點適合需要(以解決光標的問題) - 即:
插入要在s中執行的值tored PROC到一個臨時表,然後調用存儲過程(那麼存儲過程將讀取臨時表)
呼叫使用表值參數
- 1. SQL查詢執行使用參數
- 2. Sql查詢參數。執行查詢時不會讀取參數
- 3. 使用MySQLdb執行多個SQL查詢
- 4. 限制執行sql查詢的次數
- 5. 一次執行exec多次查詢一次SQL
- 6. MySQL和MS SQL查詢執行不同
- 7. 執行多個測試依次用不同的參數TestNG的
- 8. SQL計數多行出現次數不同,按多行不同
- 9. 使用不同參數多次滾動
- 10. 多次使用不同的參數
- 11. 使用不同的參數多次執行jUnit runner運行測試類
- 12. LINQ使用輸出參數執行SQL查詢
- 13. 如何使用JS變量作爲參數執行sql查詢
- 14. SQL插入查詢執行兩次
- 15. 多次執行相同的SQL查詢時重用SqlCommand會更好嗎?
- 16. 查找上次插入的ID,同時執行多個查詢
- 17. JDBC SQL執行多行查詢
- 18. mysqli多查詢不執行查詢
- 19. will_paginate查詢會執行多次?
- 20. NEO4J多次執行性能查詢
- 21. 用Elixir執行sql查詢
- 22. 執行SQL查詢
- 23. 如何在Informix查詢中多次引用相同的參數?
- 24. Ansible,使用不同的參數集多次運行角色
- 25. 使用Django執行原始SQL查詢
- 26. 使用JButtons與JDBC執行SQL查詢
- 27. Python使用sqlcmd執行sql查詢
- 28. 使用PHP執行SQL查詢
- 29. 使用JDBCTemplate執行IN()SQL查詢
- 30. 如何避免多次執行相同的查詢?
哪裏的參數來自存儲過程?一個數據庫表? – 2012-03-05 20:22:04
是的。表中的特定列不能少。 – SoftwareSavant 2012-03-05 20:23:17
可以循環訪問表中的列值,並將它們用作存儲過程調用中的參數。但是,這可能會很慢。有時候更好(甚至有可能)將存儲過程重寫爲非過程化SQL。當然,你還沒有顯示你的代碼,所以不可能說出你的情況最好。 – 2012-03-05 20:27:36