是调用函数的默认方式select * from my_function()吗?
我问,因为我已经构建了一个不返回任何内容的函数,只是将数据插入到表中(来自SQL Server背景),调用它时"感觉"很奇怪 select * from...
我期待着类似的东西 exec my_function()
Rom*_*kar 46
使用PERFORM声明 - http://www.postgresql.org/docs/current/static/plpgsql-statements.html
有时,为了计算表达式或SELECT查询,但主叫具有副作用,但没有有用的结果值的函数当丢弃该结果,例如有用的.要在PL/pgSQL中执行此操作,请使用PERFORM语句
所以这只是
DO $$ BEGIN
PERFORM my_function();
END $$;
Run Code Online (Sandbox Code Playgroud)
Cra*_*ger 37
PostgreSQL 11 支持 @AbdisamadKhalif指出的真正存储过程.它们支持过程中的事务控制.
是的,这是标准方式,是的,这很奇怪.
通常,您可以编写诸如存储过程之类的函数,并使用CALLor EXECUTE命令调用它们.PostgreSQL不支持真正的存储过程(多个结果集,自治事务,以及所有这些),只有sql可调用的用户定义函数.
因此,解决方法是SELECT function_name()使用PostgreSQL扩展语法,省略FROM或SELECT 1 FROM function_name();(稍微)更标准.
ODBC驱动程序,JDBC驱动程序等了解{call func_name()}转义语法并自动将其转换为底层语法SELECT.
Clo*_*eto 24
您将from在函数返回集合时使用.如果函数返回void只是做
select my_function();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67902 次 |
| 最近记录: |