我需要爲存儲過程中的臨時表創建DDL語句 (Firebird 2.5);Firebird 2.5 PSQL存儲過程與CREATE GLOBAL TEMPORARY TABLE
我知道我需要使用EXECUTE STATEMENT和動態SQL;
儘管存儲過程本身已經成功執行並提交,但每次運行存儲過程時,我都會在IBExpert中得到某種動態SQL錯誤 。
我所需要的確切的語法和一步一步如何寫一個火鳥存儲過程中動態 SQL代碼,即與20列創建一個全局臨時 表(GTT)的方式,和從另一插入數據存儲過程(具有20列的客戶端存儲過程)。
我從GTT(20列)檢索這些數據的一部分(5列), 操縱它,並開發SSRS報告;我不應該修改 原始客戶端存儲過程,因爲它屬於我們的客戶端。
CREATE OR ALTER PROCEDURE XYZ (Parameter1, Parameter2, Parameter3)
RETURNS
(
column1,
column2
column3,
column4,
column5
)
-- I need 5 columns in my stored procedure XYZ --
AS
BEGIN
EXECUTE STATEMENT
'CREATE GLOBAL TEMPORARY TABLE MyOwnTable
(
column1,
column2
column3,
column4,
column5,
column6,
column7,
column8,
.
.
column20
)
ON COMMIT PRESERVE ROWS;
COMMIT;' ;
EXECUTE STATEMENT
'INSERT INTO MyOwnTable
SELECT *
FROM Client_Stored_Procedure (:Parameter1, :Parameter2, :Parameter3); ';
-- Client_Stored_Procedure : given by client -- has the same 3 parameters --
EXECUTE STATEMENT
'SELECT column1,column2,column3,column4, SUM(column5) AS "CalculatedColumn"
FROM MyOwnTable
GROUP BY column1,column2,column3,column4
WITH AUTONOMOUS TRANSACTION
INTO :column1,:column2,:column3,:column4,:CalculatedColumn ; ' ;
SUSPEND;
END
我能犯這個存儲過程XYZ;但是當我運行我得到令牌未知提交....
我已經修改了此過程的許多不同部分;仍然得到某種令牌未知錯誤;
我在編寫Firebird中的存儲過程時非常基本;有人可以幫助我,給我正確的解決方案嗎?