PostgreSQL 9.6.0 �ֲ�
| |||
---|---|---|---|
��һҳ | ��һ�� | �� 41. PL/pgSQL - SQL�������� | ��һҳ |
��PL/pgSQL�н��п�����һ�ֺ÷�����ʹ�����Լ�ѡ����ı��à¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ò»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê¹ï¿½ï¿½psql�����벢�Ҳ�����Щ�����������������������ʹ��CREATE OR REPLACE FUNCTION����д������һ�������⡣�����ַ�ʽ��ֻ��Ҫ���ظ��ļ������º����Ķ��塣���磺
CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $$ .... $$ LANGUAGE plpgsql;
������psql�ڼ䣬�������������������������������һ�����������ļ���
\i filename.sql
���ҽ����������� SQL ���������Ըú�����
��һ����PL/pgSQL�п����ķ�ʽ����һ�� GUI ���ݿ���ʹ��ߣ����ܷ���Թ������ԵĿ��������ֹ��ߵ�һ��������pgAdmin����Щ����ͨ���ṩ��������ԣ�����ת�嵥�����Լ��������´����͵��Ժ�����
һ��PL/pgSQL�����Ĵ�����һ��CREATE FUNCTION�б�ָ��Ϊһ���ַ������������ͨ���ķ�ʽ�Ѹ��ַ���д�ڵ������м䣬��ô�ú������е��κε����Ŷ����뱻˫д��ͬ���κη�б��Ҳ���뱻˫д���ٶ�ʹ����ת���ַ����﷨����˫д��������е��߳��������ڸ����ӵ�����д��������ȫ�޷����⣬��Ϊ������׷�������Ҫ�����߸������ڵ����š������Ƽ���ת���Ѻ�����д��һ��"��Ԫ����"���ַ��������� 4.1.2.4 ����������Ԫ���÷����У���Ӳ���Ҫ˫д�κ����š�����Ҫע��Ϊ����Ҫ��ÿһ��Ƕ��ѡ��һ����ͬ����Ԫ���ö���������磬����ܰ�CREATE FUNCTION����д�ɣ�
CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $PROC$ .... $PROC$ LANGUAGE plpgsql;
�������棬������� SQL ������Ϊ���ַ���ʹ�����Ų�����$$���綨������װ���ַ����� SQL ����Ƭ�Ρ��������Ҫ���ð���$$���ı��������ʹ��$Q$�ȵȡ�
����ͼ��չʾ����дû����Ԫ���õ�����ʱ��Ҫ��ʲô���ڽ�֮ǰ����Ԫ���õĴ��ë·ï¿½ï¿½É¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ä´ï¿½ï¿½ï¿½Ê±ï¿½ï¿½ï¿½ï¿½ï¿½Ç»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
������ʼ�ͽ��������壬���磺
CREATE FUNCTION foo() RETURNS integer AS ' .... ' LANGUAGE plpgsql;
��һ�����������õĺ������е��κ�λ�ã����������ɶԳ��֡�
���ں������ڵ��ַ��������磺
a_output := ''Blah''; SELECT * FROM users WHERE f_name=''foobar'';
����Ԫ���÷����У���ֻ��Ҫд��
a_output := 'Blah'; SELECT * FROM users WHERE f_name='foobar';
��ǡ�þ���PL/pgSQL����������лῴ���ġ�
�����ں����ڵ�һ���ַ�����������Ҫһ��������ʱ�����磺
a_output := a_output || '' AND name LIKE ''''foobar'''' AND xyz''
ʵ�ʻᱻ׷�ӵ�a_output��ֵ���ǣ� AND name LIKE 'foobar' AND xyz��
����Ԫ���÷����У������д��
a_output := a_output || $$ AND name LIKE 'foobar' AND xyz$$
ҪС��������Χ���κ���Ԫ���ö������ֻ��$$��
���ں������ڵ�һ���ַ����е�һ������������ַ�������ĩβ���ڣ����磺
a_output := a_output || '' AND name LIKE ''''foobar''''''
��׷�ӵ�a_output��ֵ���ǣ� AND name LIKE 'foobar'��
����Ԫ���÷����У�����ɣ�
a_output := a_output || $$ AND name LIKE 'foobar'$$
��������һ���ַ���������ռ 8 �����ţ���������������ʱ������ᰤ�Ÿ��ַ���������ĩβ������ 2 ���������������дһ���������������ĺ��������� 41-9�У����㽫�ܿ���ֻ��Ҫ���֡����磺
a_output := a_output || '' if v_'' || referrer_keys.kind || '' like '''''''''' || referrer_keys.key_string || '''''''''' then return '''''' || referrer_keys.referrer_type || ''''''; end if;'';
a_output��ֵ���ǣ�
if v_... like ''...'' then return ''...''; end if;
����Ԫ���÷����У�����ɣ�
a_output := a_output || $$ if v_$$ || referrer_keys.kind || $$ like '$$ || referrer_keys.key_string || $$' then return '$$ || referrer_keys.referrer_type || $$'; end if;$$;
�������Ǽٶ�����ֻ��Ҫ�ѵ����ŷ���a_output�У���Ϊ��ʹ��ǰ�����������á�
Ϊ�˸����û���һЩ�򵥵��������������Σ��֮ǰ�ҵ����ǣ� PL/PgSQL�ṩ�˶�����������������ʱ�� �������ã����ǿ�����һ�������ı����ڼ䱻�������� WARNING����ERROR��һ���Ѿ��յ��� WARNING�ĺ������Ա�����ִ�ж����������һ������Ϣ�� ��˽�������һ�������Ŀ��������н��в��ԡ�
��Щ����ļ��ͨ�����ñ���plpgsql.extra_warnings ��plpgsql.extra_errors���ã�����ǰ�����ھ���������� �ڴ������߶����Ա�����Ϊһ���ö��ŷָ��ļ���б��� "none"����"all"��Ĭ��ֵ��"none"�� ��ǰ�б��п��õļ��ֻ��һ�֣�
���һ�������Ƿ��ڸ�����һ��֮ǰ����ı�����
���������չʾ�˽�plpgsql.extra_warnings ����Ϊshadowed_variables��Ч����
SET plpgsql.extra_warnings TO 'shadowed_variables'; CREATE FUNCTION foo(f1 int) RETURNS int AS $$ DECLARE f1 int; BEGIN RETURN f1; END $$ LANGUAGE plpgsql; WARNING: variable "f1" shadows a previously defined variable LINE 3: f1 int; ^ CREATE FUNCTION
��һҳ | ��ʼҳ | ��һҳ |
PL/pgSQL���ڲ� | ��һ�� | ��Oracle PL/SQL ��ֲ |