加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – ‘$$’在PL/pgSQL中使用什么

发布时间:2020-12-13 16:47:04 所属栏目:百科 来源:网络整理
导读:作为PL / pgSQL的全新,什么是在 this function双美元符号的意思: CREATE OR REPLACE FUNCTION check_phone_number(text)RETURNS boolean AS $$BEGIN IF NOT $1 ~ e'^+d{3} d{3} d{3} d{3}$' THEN RAISE EXCEPTION 'Wrong formated string "%".
作为PL / pgSQL的全新,什么是在 this function双美元符号的意思:
CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS $$
BEGIN
  IF NOT $1 ~  e'^+d{3} d{3} d{3} d{3}$' THEN
    RAISE EXCEPTION 'Wrong formated string "%". Expected format is +999 999';
  END IF;
  RETURN true; 
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;

我猜,在RETURNS布尔AS $$,$$是一个占位符。

最后一行有点神秘:$$ LANGUAGE plpgsql STRICT IMMUTABLE;

顺便问一下,最后一行是什么意思?

美元符号用于 dollar quoting,并且没有特定于函数定义。它可用于替换SQL脚本中几乎任何位置的单引号。

函数的正文恰好是一个字符串文字,必须用单引号括起来。美元引用是一个PostgreSQL特定的单引号替换,以避免引用函数体内的问题。你可以用单引号写出你的函数定义。但是,你必须逃避所有单引号的身体:

CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS
'
BEGIN
  IF NOT $1 ~  e''^+d{3} d{3} d{3} d{3}$'' THEN
    RAISE EXCEPTION ''Malformed string "%". Expected format is +999 999'';
  END IF;
  RETURN true; 
END
' LANGUAGE plpgsql STRICT IMMUTABLE;

这不是一个好主意。换句话说,使用美元引用,更具体地说,在$$之间放置一个令牌以使其唯一 – 你可能想在函数体中使用$ -quotes。我做了很多,实际上。

CREATE OR REPLACE FUNCTION check_phone_number(text)
  RETURNS boolean  
AS
$func$
BEGIN
 ...
END
$func$  LANGUAGE plpgsql STRICT IMMUTABLE;

细节:

> Insert text with single quotes in PostgreSQL

至于你的第二个问题:
阅读最优秀的manual on CREATE FUNCTION了解你的例子的最后一行。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读