也许这不是新的情况下,但我堆栈关于它.这是我用来运行查询过程,它在MySQL中正常运行,但不是在PostgreSQL,我不知道如何做到这一点.该过程(在MySQL)看起来像:
CREATE PROCEDURE runstatement(IN statement TEXT)
BEGIN
SET @s = statement;
IF LENGTH(@s) <> 0 THEN PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END
字符串
问题:
1.如何将其转换为PostgreSQL版本?
1.当我在另一个过程中需要它时,我如何调用这个过程(runstatement)?在MySQL中我知道CALL runstatement(param)
。
谢谢你的回复。我是数据库编程的新手,尤其是PostgreSQL。
3条答案
按热度按时间6tqwzwtp1#
这种技术被命名为 dynamic SQL。PLpgSQL为这种情况提供了
EXECUTE
语句。可能为此编写特殊函数是无用的,因为EXECUTE
是一行命令。字符串
可能测试空字符串是坏的设计。这种情况下不应该是。
Assert
是更好的。这个函数可以被称为:
型
或
型
参见文档中的相关部分。
vltsax252#
如何在postgresql 11和dbconnection中使用. net创建存储过程
如果我们有旧版本,我们没有过程。现在我们在postgresql版本11中有过程。这是新的postgresql版本11。
字符串
下面的过程基于refcursor选择查询。
型
zkure5ic3#
您可以使用PL/pgSQL或SQL语言创建过程。
例如,创建
test
表,如下所示:字符串
然后,插入
num
为2
的行,如下所示:型
现在,您可以创建
my_proc()
PL/pgSQL过程,该过程将value
添加到num
并将value
返回给调用者,如下所示:型
或者,您可以创建
my_proc()
SQL过程,将value
添加到num
并将value
返回给调用者,如下所示:型
然后,您可以使用CALL statement调用
my_proc(3, 10)
,然后返回5
,并将3
添加到num
,如下所示:型