[英]sql call function multiple times in a loop. postgres 8.3
我有一個以“key”變量作為參數的函數。
我想為一系列鍵值調用此函數。
我試過這個,沒有用...
BEGIN
for i IN 773..775 LOOP
test_count(i);
end LOOP;
end;
SQL 錯誤:錯誤:“for”第 2 行或附近的語法錯誤:for i IN 773..775 LOOP
@Mihai 已經解釋過您不能使用DO
在函數或匿名代碼塊之外運行過程元素。
您的語法仍然會失敗,因為您無法在不處理返回值的情況下在任何地方調用函數。 如果您想丟棄可能的返回值,請在這樣的函數中使用PERFORM
(適用於 PostgreSQL 8.3):
CREATE OR REPLACE FUNCTION foo() RETURNS void LANGUAGE plpgsql AS $BODY$ BEGIN FOR i IN 773 .. 775 LOOP PERFORM test_count(i); END LOOP; END; $BODY$;
PostgreSQL 8.3 無法運行匿名過程/函數或在過程/函數之外創建變量。
從9.0
版開始,添加了DO
構造作為對匿名過程的支持。
您應該在一個函數內運行您的代碼。 因為您收到的錯誤消息指出FOR
是全局上下文中的意外關鍵字。
為您的密鑰使用記錄類型
DO $BODY$
DECLARE tmp_row record;
BEGIN
FOR tmp_row IN (SELECT key from my_keys_table)
LOOP
PERFORM test_function(tmp_row.key);
END LOOP;
END;
$BODY$;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.