被遗忘的赋值运算符“=”和“平凡”:=

被遗忘的赋值运算符“=”和“平凡”

PL/pgSQL的文档说,声明和变量赋值是通过:=..但是一个简单的,更短的,更现代 (见脚注) =似乎如预期的那样起作用:

    CREATE OR REPLACE FUNCTION foo() RETURNS int AS $$
    DECLARE
      i int;
    BEGIN
      i = 0;  
      WHILE NOT i = 25 LOOP
          i = i + 1;
          i = i * i;
      END LOOP;
      RETURN i;
    END;
    $$ LANGUAGE plpgsql;

    > SELECT foo();
    25

请注意,Pl/pgSQL可以清晰地区分赋值和比较,如行所示

      WHILE NOT i = 25 LOOP

因此,问题是:

  • 我没有在文档中找到提到和/或解释这一点的部分吗?
  • 是否有任何已知的后果

    =

    而不是

    :=?

编辑/脚注:

请拿出“更现代”的部分,像在眨眼。程序设计语言的简短、不完整和大多数错误的历史:

1970年的今天,NiklausWirth创造了一种程序语言Pascal。批评人士立即谴责Pascal,因为它使用了“x:=x+y”语法,而不是更熟悉的C类“x=x+y”。尽管C还没有被发明出来,但这种批评还是发生了。

1972年的今天,丹尼斯·里奇(DennisRitchie)发明了一种能同时向前和向后同时射出的他对这项发明造成的死亡和永久致残的人数不满意,他发明了C和Unix。


鸿蒙传说
浏览 426回答 3
3回答

肥皂起泡泡

对我自己的问题的部分回答是:PL/pgSQL部分获得结果状态显示了两个使用特殊语法的示例:GET DIAGNOSTICS variable = item [ , ... ]; GET DIAGNOSTICS integer_var = ROW_COUNT;我都试过了:=和=两者都能用。但GET DIAGNOSTICS是特殊的语法,因此可以说,这也不是普通的PL/pgSQL赋值操作。
打开App,查看更多内容
随时随地看视频慕课网APP