【问题标题】:Convert SQL Server stored procedure into PostgreSQL stored procedure [closed]将 SQL Server 存储过程转换为 PostgreSQL 存储过程 [关闭]
【发布时间】:2013-06-05 10:43:55
【问题描述】:

我对 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

【问题讨论】:

  • SO 并不是什么神奇的设备,它可以自动将一种语言的代码转换成另一种语言的代码。你应该解释这段代码的用途、它的作用以及你试图得到什么结果。如果很明显你被卡住了,那么你可能会得到一些帮助。
  • 谢谢,mvp,但我想创建一个 SP,在其中我希望在某些条件下执行动态查询。所以请帮助我,
  • @mvp 啊该死的我只是想开一家公司,只在 SO 上发布需求,然后将答案提供给客户。
  • @NLWino ,我是数据库开发人员,由于数据量很大,我需要将一些数据传输到 postgre sql 并希望使用它...
  • 你能解释一下这个过程是做什么的吗?我很难理解它。 (顺便说一句:它是 Postgres 或 PostgreSQL,绝不是“postgre”)

标签: sql sql-server-2008 postgresql stored-procedures


【解决方案1】:

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

概念完全不同。

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

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

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

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

【讨论】:

  • 谢谢,但请您帮忙动态查询
  • 感谢部分“PG 没有“程序”,我不会一直在谷歌上搜索如何执行这些操作,谢谢。
【解决方案2】:

鉴于您的评论

动态传递表名,它将执行动态查询。我有日间表。

我想说你想调查一下:

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2020-06-06
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多