PG 儲存函式呼叫變數的3種方法。

2022-07-17 21:42:16 字數 990 閱讀 8207

一、假設有表student,字段分別有id,remark,name等字段。

二、寫乙個儲存函式,根據傳過去的變數id更新remark的內容。

呼叫該儲存函式格式如下:select  update_student(1);

三、儲存函式示例如下:    

create or replace function public.update_student(id integer)

returns text as

$body$

declare sql_str_run text;

begin

/*--method 1

select 'update student set remark ='''|| now() ||''' where student.id = '|| $1 into sql_str_run ;

execute sql_str_run;

--method 2

execute 'update student set remark =now() where student.id=$1' using $1;

*/ --method 3

update student set remark =now() where student.id=$1;

return 'update is ok' ;

end$body$

language plpgsql volatile

以上三種方法都可以實現同樣的效果,實際應用中,可以結合場景來使用。比較簡單的情況下直接用method 3。

比如,表名、欄位名本身是變數,那麼method 3 就無法實現,需要根據method 1或method 2來實現。

method 1或method 2 有什麼區別呢?

如果需要拼的變數可以直接獲取的,則用method2即可。如果變數本身也是需要需要通過函式或語句的計算來獲得,一般建議用method 1,先拼成乙個字串,再呼叫execute來實現。

定義函式的3種方法

1.三種方法 1 函式宣告function funcname 2 函式表示式var funcname function 注意 在使用函式表示式宣告函式的時候,function後面可以跟函式名,但是這個函式名,只限在函式內部使用,外部無法訪問。3 var funcname new function 語...

建立函式的3種方法

建立函式的3種方法 1.用宣告方式建立函式 1 如何建立 function 函式名 形參變數列表 宣告變數方式建立函式存在的問題 會被宣告提前。什麼是宣告提前 在程式開始執行前,程式會先將var宣告的變數和function宣告的函式提前到當前作用域的頂部集中建立,賦值留在原地 宣告提前的缺點 打亂程...

CRC的3種方法

一.crc16演算法 首先在原始檔標頭檔案加入錶值 cpp view plain copy print?crc16碼表 static word const wcrc16table 256 crc16碼表 static word const wcrc16table 256 然後在檔案中加入下列函式 c...