我是PostgreSQL数据库的新手,我在SQL Server 2008中开发数据库对象,但我也需要对PostgreSQL进行一些操作。
在这里,我编写了一个SQL Server的示例存储过程,我需要将其转换为PostgreSQL。请用PostgreSQL帮助我。
提前致谢。
下面是示例SQL Server存储过程:要求转换为PostgreSQL存储过程
CREATE PROCEDURE [dbo].[usp_GetData_ByTableName]
(
@TableName NVARCHAR(MAX)
,@IncludeKeepAlive BIT
,@RowsAffected BIGINT=0 OUTPUT
) AS
BEGIN
SET NOCOUNT ON
DECLARE @SQL VARCHAR(MAX)
/****************************************************************
Select data base on parameter.
*****************************************************************/
SET @SQL =
'
SELECT *FROM '+@TableName+'
WHERE 1=1
'
+
CASE WHEN (@IncludeKeepAlive = 0)
THEN
'
AND [MessageTransactionID] <> 152
'
ELSE
''
END
EXECUTE SP_EXECUTESQL @SQL
RETURN 0
END
答案 0 :(得分:3)
从MS SQL到PostgreSQL没有1:1的“转换”。
概念完全不同。
我强烈建议简单地重新实现功能并利用PostgreSQL所具有的功能,而不是试图模仿SQL Server。
当人们试图将一个DBMS的技术解决方案移植到另一个DBMS时,他们通常会遇到一些速度慢而且无法扩展的东西(对Oracle来说也是如此 - &gt; SQL服务,SQL Server - &gt; Oracle,DB2 - &gt; Oracle和SQL Server - &gt; PostgreSQL也是如此。)
阅读有关存储功能的手册(PG没有“程序”)重新阅读当前解决方案的规范,然后使用Postgres提供的功能简单地实现它。
我确信这不是你想要的答案,但我坚信这是唯一可行的方法。
答案 1 :(得分:2)
鉴于你的评论
动态传递表名,它将执行动态查询。我有天智的桌子。
我想说你想看一下:
EXECUTE .. USING
statement和format
函数与%I
格式说明符