簡體   English   中英

如何使用Data Studio 4.1.3客戶端在DB2中創建存儲過程

[英]How to Create Stored Procedure in DB2 with Data Studio 4.1.3 client

CREATE OR REPLACE PROCEDURE SPLoginAuditHistory_Login
(
    IN @Menuid int,
    IN @UserID numeric,
    IN @UserName varchar,   
    OUT @Result int
)
    DYNAMIC RESULT SETS 1
P1: BEGIN       
    DECLARE @err int;

    BEGIN TRANSACTION
    BEGIN
        INSERT INTO Login_Audit_History(Menuid,UserID,UserName,LoginTime)
        VALUES(@Menuid,@UserID,@UserName,Current DATE)
    END 
    SELECT @err=@@Error if @err<>0 goto Fail

    SELECT @Result=0
    COMMIT TRANSACTION
    RETURN

    Fail:
    SELECT @Result=1
    ROLLBACK TRANSACTION
    RETURN  

END P1;

您的問題與IBM Data Studio無關,而是與了解Db2過程SQL語法有關。

如果Db2服務器在Linux / Unix或Microsoft-Windows上運行,則配置正確后,您可以使用ANSI SQL PL語法或Oracle風格的PL SQL語法編寫SQL過程。

您的語法不符合Db2-LUW可以理解的兩種SQL風格。

如果要從其他RDBMS遷移代碼,請花時間了解不同供應商提供的用於遷移到Db2的轉換工具。

下面是您的一些錯誤,因此對於每個錯誤,請研究正確的Db2文檔,直到您了解需要什么為止:

  • 變量名不能以@開頭

  • 顯式事務控制, COMMIT [工作]或ROLLBACK [工作] [保存點...]

  • 如果要進行非默認錯誤檢查和錯誤處理,則應使用異常處理程序和/或顯式SQLCODE檢查。

  • 如果要返回結果集,則必須顯式定義並打開游標,然后再從存儲過程中返回

  • 存儲過程的末尾需要與分號不同的定界符。 例如,許多人使用@或! 指示復合SQL塊的結尾。 您需要配置GUI來告訴它使用哪個定界符。

Db2服務器隨附的示例學習,這些示例也在線(請確保使用正確版本的Db2文檔來匹配您的Db2服務器版本和平台)。 對於Db2 Linux / Windows v11.1,示例在此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM