2013-06-05 4 views
-2

Я очень новичок в базе данных PostgreSQL, я разрабатываю объекты базы данных в SQL Server 2008, но мне также требуется некоторая операция на PostgreSQL.Преобразование хранимой процедуры SQL Server в хранимую процедуру 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 '[email protected]+' 
     WHERE 1=1 
    ' 
    + 
    CASE WHEN (@IncludeKeepAlive = 0) 
     THEN 
      ' 
       AND [MessageTransactionID] <> 152 
      ' 
     ELSE 
      '' 
    END  

    EXECUTE SP_EXECUTESQL @SQL 

    RETURN 0 
END 
+6

ТАК НЕ некоторые волшебное устройство, автоматически преобразует код на одном языке в код на другом языке. Вы должны объяснить, для чего этот код, что он делает и что вы пытались получить. Если очевидно, что вы застряли, ТОЛЬКО вы можете получить помощь. – mvp

+1

Спасибо, mvp, но я хочу создать один SP, в котором я хочу выполнить динамическое выполнение запроса с некоторым условием. так что, пожалуйста, помогите мне в этом, – Anvesh

+4

@ mvp Ах, черт возьми, я просто думал о том, чтобы начать компанию, которая только что поставила требования на SO, а затем доставить ответ клиенту. –

ответ

3

Там нет 1: 1 "преобразование" из MS SQL в PostgreSQL.

Концепции совершенно разные.

Я настоятельно рекомендую просто повторно реализовать функциональность и использовать функции, которые имеет PostgreSQL, вместо того, чтобы пытаться запустить SQL Server.

Когда люди пытаются перенести техническое решение одной СУБД на другую, они обычно заканчивают тем, что медленно и не масштабируются (это верно для Oracle -> SQL Servve, SQL Server -> Oracle, DB2 -> Oracle и SQL Server -> PostgreSQL).

Прочтите руководство по сохраненным функциям (у PG нет «процедур») перечитайте спецификацию для вашего текущего решения, а затем просто используйте его, используя возможности Postgres.

Я уверен, что это не тот ответ, который вы искали, но я твердо верю, что это единственный жизнеспособный способ.

+1

Спасибо, но не могли бы вы помочь в динамическом запросе? – Anvesh

+0

Оценил часть «PG не имеет« процедур », я не буду продолжать поиск в Google, как это сделать, спасибо. – Davos

2

Учитывая Ваш комментарий

динамически передать имя таблицы и он будет выполнять динамический запрос. У меня есть дневной мудрый стол.

Я бы сказал, что вы хотите посмотреть на: EXECUTE .. USING statement и format функции

Смежные вопросы