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 至于你的第二个问题: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |