簡體   English   中英

將多維數組作為參數傳遞給Postgresql函數

[英]Pass multidimensional array as parameter to Postgresql function

我正在嘗試用PostgreSQL數據庫維護一個Php應用程序。 在某一點上,調用存儲過程,比如function_xfunction_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM