我正在使用PgAdmin1.16.I修改了此函数以查找数据库中的空(空)值列,但1)当我输入(tab_name)表名时发生一些错误。 2)这也显示了一些非空值表 有可能纠正这个功能吗?
CREATE OR REPLACE FUNCTION public.get_nullcolumns("tab_name" text,"num_input" int)
DECLARE
null_columns varchar;
tab_name ALIAS FOR $1;
num_input ALIAS FOR $2;
BEGIN
FOR null_columns IN SELECT quote_ident(attname)
FROM pg_attribute
WHERE attrelid = 'tab_name'::regclass
AND attnum >= num_input
AND NOT attisdropped
AND NOT attnotnull
ORDER BY attnum
LOOP
RAISE notice 'Tab_N:%', null_columns;
END LOOP;
RETURN null_columns;
END;
答案 0 :(得分:0)
我改变了我的功能,它运作良好
WHERE attrelid = 'tab_name'::regclass
我修改了这个
WHERE attrelid = tab_name::regclass
和
Select get_nullcolumns('tab_name' ,num_input );
Select get_nullcolumns('countyr_table' ,10 );
适用于PgAdmin1.16
答案 1 :(得分:0)
使用这个更简单的SQL函数:
CREATE OR REPLACE FUNCTION public.get_nullcolumns(tab_name regclass)
RETURNS SETOF text AS
$func$
SELECT attname
FROM pg_attribute
WHERE attrelid = $1
AND attnum >= 1
AND NOT attisdropped
AND NOT attnotnull
ORDER BY attnum
$func LANGUAGE sql;
呼叫:
SELECT * FROM public.get_nullcolumns('mytable');
你的原文有各种语法和逻辑错误。
pgAdmin的版本是无关的,这只是GUI。