Postgresql Plpgsql:如何在声明部分为变量赋值?
比如说Postgresql Plpgsql:如何在声明部分为变量赋值?,postgresql,plpgsql,Postgresql,Plpgsql,比如说 --Assigning value to variable in function as a parameter. create or replace function f1(number int :=1) --This method is not working to me. 或 以下是您如何做到这一点: create or replace function f1(my_number int default 1) 或 请看以下方法: create or replace funct
--Assigning value to variable in function as a parameter.
create or replace function f1(number int :=1) --This method is not working to me.
或
以下是您如何做到这一点:
create or replace function f1(my_number int default 1)
或
请看以下方法:
create or replace function f1(my_number int default 1)
或
看看还有更多
创建或替换函数f1(数字int:=1)--此方法对我无效
这项工作:
CREATE OR REPLACE FUNCTION f1(number int = 1) ...
因为:=
是的赋值运算符,而它是SQL的=
。有关问题的详情:
CREATE FUNCTION
是一条SQL语句,即使在创建plpgsql函数时也是如此
在plpgsql内部,两个变量都可以接受,但只有:=
是正确的<代码>=是可以容忍的,因为这是人们普遍犯的错误。(更新:自第9.4页起,两种变体均已记录在案。)然而,在少数情况下,必须进行区分。例如,使用调用上述函数时。它必须是:
SELECT * FROM f1(number := 1);
更好的是,在Postgres 9.5或更高版本中,在函数调用中使用=>
进行参数赋值:
SELECT * FROM f1(number => 1);
与:
这是幸运的案例,也是更常见的案例。如果在调用语句的范围内可以找到number
,并且可以接受已计算的布尔表达式作为函数参数,则表示您已成功构建了邪恶陷阱。如果您不知道:=
和=
之间的区别,那么很难进行调试。还有更多
创建或替换函数f1(数字int:=1)--此方法对我无效
这项工作:
CREATE OR REPLACE FUNCTION f1(number int = 1) ...
因为:=
是的赋值运算符,而它是SQL的=
。有关问题的详情:
而CREATE FUNCTION
是一条SQL语句,即使在创建plpgsql函数时也是如此
在plpgsql内部,两个变量都可以接受,但只有:=
是正确的<代码>=
是可以容忍的,因为这是人们普遍犯的错误。(更新:自第9.4页起,两种变体均已记录在案。)然而,在少数情况下,必须进行区分。例如,使用调用上述函数时。它必须是:
SELECT * FROM f1(number := 1);
更好的是,在Postgres 9.5或更高版本中,在函数调用中使用=>
进行参数赋值:
SELECT * FROM f1(number => 1);
与:
这是幸运的案例,也是更常见的案例。如果在调用语句的范围内可以找到number
,并且可以接受已计算的布尔表达式作为函数参数,则表示您已成功构建了邪恶陷阱。如果您不知道:=
和=
之间的区别,则很难进行调试。赋值,一般说明
(关于为声明部分之外的变量赋值)
语言PLpgSQL语法有多种表达方式:
Y := f(X);
EXECUTE
子句仅用于“动态执行”(性能较差)
使用Y:=f(X)代码>或选择
执行静态声明
SELECT f(X) INTO Y;
放弃结果或处理无效返回时使用station:
PERFORM f(X);
赋值,一般注释
(关于为声明部分之外的变量赋值)
语言PLpgSQL语法有多种表达方式:
Y := f(X);
EXECUTE
子句仅用于“动态执行”(性能较差)
使用Y:=f(X)代码>或选择
执行静态声明
SELECT f(X) INTO Y;
放弃结果或处理无效返回时使用station:
PERFORM f(X);
首先,我建议您不要使用postgreSQL的标记作为变量名。第二,为什么它不起作用,您能发布错误消息,更多关于您的函数,您的PostgreSQL版本吗?--我的函数创建或替换函数“funCreateAnalysisView”(“AnalysisMID”bigint:=1)--错误消息错误:语法错误在或附近):=“第1行:…e函数“funCreateAnalysisView”(“AnalysisMID”bigint:=1)^@SarfarazMak编辑您的问题以添加更多信息,而不仅仅是添加评论。否则很难读。编辑,然后在进行所需编辑后添加评论。对不起,Craig Ringer。下一次我会小心的。首先,我建议您不要使用postgreSQL的标记作为变量名。第二,为什么它不起作用,您能发布错误消息,更多关于您的函数,您的PostgreSQL版本吗?--我的函数创建或替换函数“funCreateAnalysisView”(“AnalysisMID”bigint:=1)--错误消息错误:语法错误在或附近):=“第1行:…e函数“funCreateAnalysisView”(“AnalysisMID”bigint:=1)^@SarfarazMak编辑您的问题以添加更多信息,而不仅仅是添加评论。否则很难读。编辑,然后在进行所需编辑后添加评论。对不起,Craig Ringer。下次会小心的,工作很好。谢谢你,胡阿里。下次我也会注意把我的问题弄清楚。对不起,这次我工作得很好。谢谢你,胡阿里。下次我也会注意把我的问题弄清楚。很抱歉,到2018年,“=是否被容忍”仍然如此?或者“=”与“:=”现在?@LiweiZ:因为Postgres 9.4,两者都有记录(=完全相同)。感谢您的快速确认。到2018年“=是否被容忍”仍然如此?或者“=”与“:=”现在?@LiweiZ:因为Postgres 9.4,两者都有文档记录(=完全相同)。感谢您的快速确认。