PL / pgSQL如果存在则显示没有函数的结果

时间:2014-12-08 11:37:24

标签: postgresql plpgsql postgresql-9.3

我在这里有一个声明,从我能说的就可以了。如果评估条件并将结果粘贴到变量中。我需要知道的是如何从变量中读取值并显示它。感谢

DO
$do$
DECLARE result text;

BEGIN
IF EXISTS (select 1 from siteName where SiteNameID=9) THEN
   SELECT 'Yes' into result;
ELSE 
   SELECT 'No' into result;
END IF;

END
$do$

3 个答案:

答案 0 :(得分:1)

如果通过显示,您的意思是输出到STDOUT:

RAISE NOTICE 'result: %', result;

http://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html

答案 1 :(得分:0)

DO声明无法返回任何内容。您可以使用通知,就像Denis已经展示的那样。

但为什么你需要一个功能呢?您可以使用常规查询,如下所示:

SELECT  CASE
        WHEN input.SiteNameID = siteName.SiteNameID THEN 'Yes'
        ELSE 'No'
    END AS result
FROM    (SELECT 9 AS SiteNameID) input
    LEFT JOIN siteName ON input.SiteNameID = siteName.SiteNameID;

(未经测试....)

答案 2 :(得分:0)

您无法从DO命令返回数据。为此,您需要一个功能。使用DO命令限制来自RAISE的消息,如Denis提供的消息,或者您可以将数据写入表或临时表,并从中进行选择。

DO
$do$
BEGIN
CREATE TEMP TABLE site9_exists AS
SELECT EXISTS (SELECT 1 FROM sitename WHERE sitenameid=9) AS result;
END
$do$;

SELECT result FROM site9_exists;

当然,对于这个简单的例子,你根本不需要DO命令......