postgresql 存储函数调用变量的3种方法小结
一、假设有表student,字段分别有id,remark,name等字段。
二、写一个存储函数,根据传过去的变量ID更新remark的内容。
调用该存储函数格式如下:
selectupdate_student(1);
三、存储函数示例如下:
CREATEORREPLACEFUNCTIONpublic.update_student(idinteger) RETURNStextAS $BODY$ declaresql_str_runtext; BEGIN /* --method1 select'updatestudentsetremark='''||now()||'''wherestudent.id='||$1intosql_str_run; executesql_str_run; --method2 execute'updatestudentsetremark=now()wherestudent.id=$1'using$1; */ --method3 updatestudentsetremark=now()wherestudent.id=$1; return'updateisok'; end $BODY$ LANGUAGEplpgsqlVOLATILE
以上三种方法都可以实现同样的效果,实际应用中,可以结合场景来使用。比较简单的情况下直接用method3。
比如,表名、字段名本身是变量,那么method3就无法实现,需要根据method1或method2来实现。
method1或method2有什么区别呢?
如果需要拼的变量可以直接获取的,则用method2即可。如果变量本身也是需要需要通过函数或语句的计算来获得,一般建议用method1,先拼成一个字符串,再调用execute来实现。
补充:postgresql存储函数/存储过程用sql语句来给变量赋值
--定义变量
anumeric;
方式一:
selectsqlaintoafromtable1whereb='1';--这是sql语句赋值
方式二:
sql1:='selectafromtable1whereb=''1'''; executesql1intoa;--这是执行存储函数赋值
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。