Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Plpgsql:如何在声明部分为变量赋值?_Postgresql_Plpgsql - Fatal编程技术网

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,两者都有文档记录(=完全相同)。感谢您的快速确认。