pgsql里的函数就是存储过程,触发器会用到函数。
函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| CREATE OR REPLACE FUNCTION code_trigger_func1() RETURNS INT AS $$ DECLARE code VARCHAR; table_exist VARCHAR; sql_temp VARCHAR; t_name varchar; BEGIN code := 'c00001'; t_name := 'j_test_'||code;
select to_regclass(t_name) into table_exist; if table_exist is NULL THEN
sql_temp := 'create table '||t_name||'() inherits (j_code);'; EXECUTE(sql_temp); sql_temp := 'alter table '||t_name||' add CONSTRAINT j_cons_'||t_name||' PRIMARY KEY(code);'; EXECUTE(sql_temp); raise notice 'existin: %', table_exist; raise notice 'table : % created', t_name; ELSE raise notice 'exist: %',table_exist; END IF; return 1; END; $$ LANGUAGE plpgsql;
|
一些常见问题
单引号嵌套
要在单引号里打印出单引号,比如raise notice 'xxxx'
正确写法:
也就是不是用/
转义,而是用单引号转义.
array_append
追加数据需要返回数组,否则报错:
1
| arr := array_append(arr, 'ele');
|
打印数组:
1
| raise notice '%s',array_to_string(arr, ',');
|
参考