我的输入参数是姓氏和名字。我需要检查表格作者是否已经存在姓氏和名字。所以我需要在表格作者的colums lastname和firstname上做一个SELECT语句,并将结果存储在一个变量中。如何进行循环proceed..if名称已经存在,它dispalys消息,否则它增加了新的名字,以表sql循环结果集
请帮
我的输入参数是姓氏和名字。我需要检查表格作者是否已经存在姓氏和名字。所以我需要在表格作者的colums lastname和firstname上做一个SELECT语句,并将结果存储在一个变量中。如何进行循环proceed..if名称已经存在,它dispalys消息,否则它增加了新的名字,以表sql循环结果集
请帮
你并不需要循环的结果要做到这一点,一个简单
IF EXISTS (
SELECT * FROM author
WHERE firstname = 'Ronald' AND lastname = 'McDonald'
) THEN ... ELSE ... END IF;`
将是最明智的方法。
不过,如果你还是想知道如何遍历在PL/pgSQL的记录,这里有一个例子:
DECLARE x record; FOR x IN SELECT first_name, last_name FROM author LOOP IF x.firstname = 'Ronald' AND x.lastname = 'McDonald' THEN ... END IF; END LOOP;
更多细节见documentation。
我不明白部分'DECLARE x记录'..我需要声明一个名为x在DECLARE部分中有类型记录的变量吗? – 2013-03-23 07:54:33
是的,这是完全正确的。请注意,文档中可能有像'author%ROWTYPE'这样的示例,它比'record'不那么一般,但这个想法是相似的。在这种情况下使用'record'。 – kputnam 2013-03-23 08:18:21
我怀疑你不需要这个循环。你使用的是什么RDBMS? – Kane 2013-03-23 06:56:30
这是我的代码: 创建或替换功能add_details(text,text)返回文本AS $$ DECLARE \t lname别名为$ 1; \t fname别名为2美元; \t res text; \t BEGIN \t res:= SELECT姓氏,名字从作者; \t LOOP \t \t IF res.lastname = $ 1 AND res.firstname = $ 16 THEN \t \t RETURN '名称已经存在'; INSERT INTO author(lastname,firstname)VALUES($ 1,$ 2); \t ELSE \t \t \t END IF; \t END LOOP; \t RETURN'成功'; END $$语言'plpgsql' SELECT add_details('aaaa','rrrrr'); – 2013-03-23 06:57:38
我使用pgAdmin 3..is,你需要知道什么? – 2013-03-23 06:59:14