Stored procedures 如何使用DataStudio4.1.3客户端在DB2中创建存储过程

Stored procedures 如何使用DataStudio4.1.3客户端在DB2中创建存储过程,stored-procedures,db2,Stored Procedures,Db2,您的问题与IBMDataStudio无关,而是与理解Db2过程SQL语法有关 如果您的Db2服务器在Linux/Unix或Microsoft Windows上运行,那么通过正确的配置,您可以使用ANSI SQL PL语法或Oracle风格的PL SQL语法编写SQL过程 您的语法不符合DB2LUW所理解的任何一种SQL样式 如果要从不同的RDBMS迁移代码,请花点时间了解不同供应商提供的用于迁移到Db2的转换工具 下面是您的一些错误,因此对于每一个错误,请研究正确的Db2文档,直到您了解需要什么

您的问题与IBMDataStudio无关,而是与理解Db2过程SQL语法有关

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

您的语法不符合DB2LUW所理解的任何一种SQL样式

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

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

变量名不能以开头@

显式事务控制、[工作]或[工作][到保存点…]

如果希望进行非默认错误检查和错误处理,则应使用处理程序和/或显式检查

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

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


从Db2服务器附带的示例中学习,这些示例也是在线的。请确保使用正确版本的Db2文档来匹配您的Db2服务器版本和平台。对于DB2Linux/WindowsV11.1,示例如下。

您的答案应该格式正确,它有助于用户理解您的问题。请参阅
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;