【问题标题】:How to Create Stored Procedure in DB2 with Data Studio 4.1.3 client如何使用 Data Studio 4.1.3 客户端在 DB2 中创建存储过程
【发布时间】:2019-08-19 06:19:13
【问题描述】:
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;

【问题讨论】:

标签: stored-procedures db2


【解决方案1】:

您的问题与 IBM Data Studio 无关,而是与理解 Db2 过程 SQL 语法有关。

如果您的 Db2 服务器在 Linux/Unix 或 Microsoft-Windows 上运行,那么通过正确的配置,您可以使用 ANSI SQL PL 语法或 Oracle 风格的 PL SQL 语法编写 SQL 过程。

您的语法不符合 Db2-LUW 理解的任何一种 SQL 样式。

如果您要从不同的 RDBMS 迁移代码,请花时间了解不同供应商提供的用于迁移到 Db2 的转换工具。

您的一些错误如下,因此对于您的每个错误,请研究正确的 Db2 文档,直到您了解需要什么:

  • 变量名不能以@开头

  • 显式事务控制,COMMIT [ WORK ] 或 ROLLBACK [ WORK ] [ TO SAVEPOINT ...]

  • 如果您想要进行非默认错误检查和错误处理,那么您应该使用exception 处理程序和/或显式SQLCODE 检查。

  • 如果要返回结果集,必须显式define 并在从存储过程返回之前打开游标

  • 存储过程的结尾需要与分号不同的分隔符。例如,许多人使用 @ 或 !表示复合 SQL 块的结束。你需要配置你的 GUI 来告诉它使用哪个分隔符。

从示例中学习,这些示例包含在您的 Db2 服务器中,并且它们也在线(请确保使用正确版本的 Db2 文档以匹配您的 Db2 服务器版本和平台)。对于 Db2 Linux/Windows v11.1,样本为 here

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多