TERADATA SQL,我將SQL語句存儲在一個表中。我想用這些SQL語句的結果填充另一個表。每條行和每列的SQL語句都不相同。你能告訴我如何實現它嗎?我試圖通過存儲過程和Shell腳本獲得結果。但是,我無法正確編碼。TERADATA SQL:通過存儲在另一個表中的查詢結果填充一個表
回答
這裏有一個漂亮的準系統程序,用於解決這個問題。
- 我們使用遊標來遍歷保存SQL語句
- 我們採用第二光標同時通過第一遊標循環動態執行的SQL字符串您的源表:因爲它變得有點毛毛並將該SQL查詢的結果FETCH到一個變量中。
我會懷疑你會遇到各種各樣的錯誤,而得到這個設置,但我相信這是相當接近的工作過程:
CREATE PROCEDURE <yourdatbase>.MyNewProcedure()
BEGIN
--Declare variables to hold the three fields as we loop through them with the cursor
--You'll need to change these types to match your table's data type so we can fetch
-- them without error inside the cursor loop
DECLARE customerID INT;
DECLARE customerName VARCHAR(50);
DECLARE sqlQUERY as VARCHAR(10000);
DECLARE source_table_cursor CURSOR FOR SELECT customerID, customerName, SQLQuery FROM <yourdatabase>.yoursourcetable FOR READ ONLY;
OPEN source_table_cursor;
looplabel:
LOOP
--We'll need a cursor for a dynamic statement
--And we'll also need an integer to catch your query
--results (Assuming they are all like (Sum(<somefield>) or some
--type of INT
DECLARE C1 CURSOR FOR S1;
DECLARE sqlResults as INT;
FETCH source_table_cursor INTO customerID, customerName, sqlQuery;
--WOAH THERE! Cursor issues something went wrong die die die
IF (SQLSTATE ='02000') THEN
LEAVE label1;
END IF;
--Now that we have a record and a sql statement we will need another cursor
--where we will execute, dynamically, the SQL statement and then fetch the
--single record result to update our target table
PREPARE S1 FROM sqlQuery;
OPEN C1;
FETCH C1 INTO sqlResults;
--Now we can INsert into your target table
INSERT INTO <yourdatabase>.yourtargettable (customerID, customerName SQL_RESULT)
VALUES (customerID, customerName, sqlResults);
CLOSE C1;
END LOOP looplabel;
CLOSE demographic_cursor;
END
感謝您提供此解決方案。 –
我在開發時創建了存儲過程。我無法理解SQL語句如何運行並在sqlResults中獲取結果。我想知道「PREPARE S1 FROM sqlQuery」;正在從查詢中獲取結果。 –
'sqlQuery'是一個正在填充第一個遊標(從您的表)中的記錄的SQL語句的varchar /字符串。我們創建了一個從語句「S1」創建的遊標。 'sql'從'sqlQuery'中的sql語句中「準備好」。一旦該語句「準備好」,我們就可以打開「C1」遊標,並使用'sqlQuery'字符串中的記錄填充's1'語句。爲了動態執行存儲在列中的sql語句,我們需要花費很多時間。 – JNevill
- 1. 通過查詢另一個表來填充一個表的值
- 2. Mysql從一個表中未填充另一個表的結果
- 3. 如何將MySQL查詢結果存儲在另一個表中?
- 4. SQl查詢通過另一個表
- 5. 從另一個查詢填充表
- 6. Informix SQL /在另一個查詢中重用存儲過程的結果
- 7. 如何在SQL Server中調用存儲過程以從另一個表中填充一個表?
- 8. MS SQL:在另一個查詢中使用存儲過程結果集?
- 9. 從另一個存儲過程在列表視圖中填充下拉列表
- 10. 添加一個SQL查詢的結果的另一個查詢
- 11. 結果SQL查詢到一個新表
- 12. SQL查詢結果到一個表
- 13. 從另一個查詢的結果查詢第二個mysql表
- 14. 通過參照另一個表更新一個表的列的SQL查詢
- 15. 用另一個查找表填充NaN
- 16. SQL獲得從一個查詢結果到另一個查詢
- 17. 調用一個存儲過程,在另一個存儲過程中返回多個表結果
- 18. 在另一個查詢中使用一個查詢的結果
- 19. 從一個到另一個填充表
- 20. 從一個表中返回不存在於另一個表中的SQL查詢
- 21. 如何查詢名稱存儲在SQL的另一個表中的表?
- 22. 如何將BigQuery查詢結果保存到另一個表中?
- 23. 如何讓MySQL存儲第一個表中第二個表的查詢結果?
- 24. 有關另一個表的SQL查詢結果爲空
- 25. 在另一個語句(子查詢?)中使用一個sql查詢的結果
- 26. 如何在另一個查詢(PHP)中使用一個SQL查詢的結果
- 27. 填充列表視圖與另一個活動的結果
- 28. 另一個查詢的查詢結果
- 29. 存儲結果的查詢和在另一個查詢中使用
- 30. 使用查詢結果在同一個表上獲得另一個結果
你的SELECT語句或在INSERT語句中的表? – Andrew
你有SQL語句存儲在一個表中。在多個專欄中?你能分享這個表格的佈局和一些樣本數據嗎?我猜測一個遊標循環遍歷這個表並動態地執行語句就可以做到這一點。 – JNevill
@Andrew:是的,我在表中有SELECT語句。我想運行這些sql查詢並用查詢結果填充另一個表。 –