Postgresql
將變數作為輸入參數傳遞給 PostgreSQL 中另一個函式內的函式
我是 PostgresQL 的新手,在為函式提供外部函式的變數時遇到了一些麻煩。(也許不可能……)
在一個函式內部,我試圖通過呼叫另一個函式來分配一個值,如下所示:left_bipolar_n:=public.convert_to_decimal(left_bipolar);
當我呼叫該函式時,如果我使用“122”之類的東西而不是“left_bipolar”作為參數,它工作得很好,但正如我得到的那樣:錯誤:數字類型的輸入語法無效:“”
我應該說 Function convert_to_decimal 需要文本
完整程式碼:
-- FUNCTION: public.AmateurExercise(numeric) --drop FUNCTION public."AmateurExercise"(numeric); CREATE OR REPLACE FUNCTION public."AmateurExercise"( n numeric) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ declare bipolar text; tamanho integer; left_bipolar text; right_bipolar text; left_bipolar_n numeric; right_bipolar_n numeric; begin bipolar:=public.convert_to_bipolar8(n); tamanho=length(bipolar); if tamanho/2 =floor (tamanho/2) then begin left_bipolar=left(bipolar,tamanho/2); right_bipolar=right(bipolar, tamanho/2); end; else left_bipolar=left(bipolar,(tamanho-1)/2); right_bipolar=right(bipolar, ((tamanho-1)/2)+1); end if; left_bipolar_n:=public.convert_to_decimal(left_bipolar); return left_bipolar_n; end; $BODY$; ALTER FUNCTION public."AmateurExercise"(numeric) OWNER TO postgres;
jjanes 評論的回答:
“該錯誤表明由於某種原因 left_bipolar 在呼叫之前包含一個空格。我猜 convert_to_bipolar8 必須將空格放在那裡。但是我們看不到它的程式碼,而不是您呼叫外部函式的輸入”