2013-01-18 87 views
2

我有一個函數,它將文本作爲輸入。 注意參數的最大長度是256. 如何傳遞更長的文本?postgres plpgsql參數文本最大長度

示例代碼:

CREATE FUNCTION Test(nameid text) 
.... # do something # .... 

我有錯誤,如果長度填充NameID> 256由於\0不存在於末端。 所以我想postgres truncate(strcat_s?)的參數。 是否有簡單方式傳遞任意長度的參數文本?

我已經試過varchar(1024)而不是text,它不起作用。相同的結果:在256個字符處截斷。

編輯

我使用的組合與SPI庫。 我從C代碼調用plpg函數。 256的錯誤是我的(需要休息)。 我用了一個strcpy_s 256度字符的限制:\ [解決]

+1

的截斷必須發生在其他地方。 「文本」幾乎是無限的(1GB)。請給我們一個完整的例子。你從哪裏得到最大值?參數長度是256? –

+0

請參閱:http://sqlfiddle.com/#!12/15e9c/5返回的值爲500個字符長 –

+0

請將解決方案放入答案中並接受答案(答案完全可以回答自己的問題並接受答案) 。所以很顯然這個問題已經解決了。 –

回答

-1

當在PostgreSQL創建功能,您只需指定「字符改變」是一樣的使用「文本」的文本參數,你應該能使用遠遠超過256個字符...

對於爲例:

CREATE OR REPLACE FUNCTION aaa.function_name(integer, character varying) 
RETURNS refcursor AS... 

問候

+1

您也可以指定'text'作爲參數類型。 –

+0

'字符'是無稽之談。不要這樣做。我引用[手冊](http://www.postgresql.org/docs/current/interactive/datatype-character.html):'沒有長度說明符的字符相當於字符(1)' –

+0

對不起,我的意思是「字符變化「而不僅僅是」角色「。根據Postgresql文檔,如果使用不帶長度說明符的字符變量,則該類型接受任何大小的字符串。變化的字符和文字大多是相同的... –