一、假設有表student,字段分別有id,remark,name等字段。
二、寫乙個儲存函式,根據傳過去的變數id更新remark的內容。
呼叫該儲存函式格式如下:select update_student(1);
三、儲存函式示例如下:
create or replace function public.update_student(id integer)以上三種方法都可以實現同樣的效果,實際應用中,可以結合場景來使用。比較簡單的情況下直接用method 3。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 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...