[英]Pass multidimensional array as parameter to Postgresql function
我正在嘗試用PostgreSQL數據庫維護一個Php應用程序。 在某一點上,調用存儲過程,比如function_x
和function_x
內部, function_y
; function_y
傳遞一個名為parameter_1
的變量, parameter_1
的定義是:
parameter_1 numeric[][3] := {};
我正在嘗試直接在命令行(或pgadmin)上執行select function_y,但是我在將空數組傳遞給函數時遇到了問題。 根據你必須使用variadic
的文檔但我試過:
select function_y(581, 'CPN-00000000001-0000', 'TPN-00000000001-0001', 100, 2013, variadic arr := array[]);
但我得到了這個錯誤:
ERROR: cannot determine type of empty array
我嘗試了不同的方法但沒有任何作用 如何在查詢中將多維數組作為參數傳遞?
1)您可以 ,但您不必將VARIADIC
參數用於數組變量。 但是,您必須在函數聲明中使用它,而不是在調用中使用它。
2)Postgres數組變量忽略定義中的維度。 我在這里引用手冊 :
當前實現也不強制聲明的維數。 無論尺寸大小或數量如何,特定元素類型的數組都被認為是相同類型的。 因此,在
CREATE TABLE
聲明數組大小或維數是簡單的文檔; 它不會影響運行時行為。
3)這是無效的語法:
parameter_1 numeric[][3] := {};
單引號是必需的:
parameter_1 numeric[][3] := '{}';
這實際上是一樣的
parameter_1 numeric[] := '{}';
這個密切相關的答案中的更多細節,代碼示例和鏈接:
返回與plpgsql函數中的輸入數組元素匹配的行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.