1
这个问题是关于Postgresql 8.3。if-statement包含条件的字符串
我有一个表中包含像'lastcontact为空'的条件的字段。在代码中,我想遍历这个表,并为每个记录,我要检查“如果条件那么”,就像这个例子:
FOR myrec IN
SELECT * FROM tabel ORDER BY colorlevel, volgnummer
LOOP
if (myrec.conditie) then
raise notice 'Condition % is true', myrec.conditie;
else
raise notice 'Condition % is false', myrec.conditie;
end if;
END LOOP;
这是我在这个例子中被称为“TABEL”表:
ID | Conditie | Colorlevel | Volgnummer | Code | Description
1 | lastcontact is null | 1 | 1 | ... | ...
2 | lastchanged is null | 1 | 2 | ... | ...
3 | lastmodified is null | 1 | 3 | ... | ...
是否可以做我想要的支票?以下错误上述结果的代码:
ERROR: invalid input syntax for type boolean: "lastcontact is null"
包含欧文的函数的结果,新科
我已经使用这个功能:
CREATE OR REPLACE FUNCTION foo(lastcontact timestamptz)
RETURNS void AS
$BODY$
DECLARE
myrec record;
mycond boolean;
BEGIN
FOR myrec IN
SELECT * FROM tabel ORDER BY colorlevel, volgnummer
LOOP
EXECUTE 'SELECT ' || myrec.conditie || ' FROM tabel' INTO mycond;
IF mycond then
RAISE NOTICE 'Condition % is true', myrec.conditie;
ELSE
RAISE NOTICE 'Condition % is false', COALESCE(myrec.conditie, 'NULL');
END IF;
END LOOP;
END;
$BODY$
language 'plpgsql' volatile
cost 100;
我得到此错误:
ERROR: column "lastcontact" does not exist
LINE 1: SELECT lastcontact is null FROM tabel
^
QUERY: SELECT lastcontact is null FROM tabel
CONTEXT: PL/pgSQL function "foo" line 9 at EXECUTE statement1
我试图自己找一个解释,但无济于事。显然它试图对数据库运行语句,但它应该理解'lastcontact'是作为函数参数给出的变量。
这不是一个表定义,但它显示了三个示例行。如果字段'conditie'包含'lastcontact
Leonard
错误消息告诉我们该字段的类型为“boolean”。所以它可以包含NULL,TRUE或FALSE。没有别的,特别是不是字符串''lastcontact
该列是一个字符串。我得到了字符串,它应该给我一个'FALSE'的'TRUE'。该字符串包含一个条件。如果我在代码中说'如果lastcontact
Leonard