-3

我对 PostgreSQL 数据库非常陌生,我正在 SQL Server 2008 中开发数据库对象,但我还需要对 PostgreSQL 进行一些操作。

在这里,我编写了一个需要转换为 PostgreSQL 的 SQL Server 示例存储过程。请用 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
4

2 回答 2

3

从 MS SQL 到 PostgreSQL 没有 1:1 的“转换”。

概念完全不同。

我强烈建议简单地重新实现功能并利用 PostgreSQL 的特性,而不是试图模仿 SQL Server。

当人们尝试将一个 DBMS 的技术解决方案移植到另一个 DBMS 时,他们通常会遇到一些缓慢且无法扩展的问题(Oracle -> SQL Serve、SQL Server -> Oracle、DB2 -> Oracle 和 SQL Server 都是如此-> PostgreSQL 也一样)。

阅读有关存储函数的手册(PG 没有“过程”)重新阅读当前解决方案的规范,然后使用 Postgres 提供的可能性简单地实现它。

我确定这不是您要寻找的答案,但我坚信这是唯一可行的方法。

于 2013-06-05T10:54:14.707 回答
2

鉴于您的评论

动态传递表名,它将执行动态查询。我有明智的桌子。

我会说你想调查:

于 2013-06-05T12:56:01.750 回答