Stored procedures 如何使用DataStudio4.1.3客户端在DB2中创建存储过程
您的问题与IBMDataStudio无关,而是与理解Db2过程SQL语法有关 如果您的Db2服务器在Linux/Unix或Microsoft Windows上运行,那么通过正确的配置,您可以使用ANSI SQL PL语法或Oracle风格的PL SQL语法编写SQL过程 您的语法不符合DB2LUW所理解的任何一种SQL样式 如果要从不同的RDBMS迁移代码,请花点时间了解不同供应商提供的用于迁移到Db2的转换工具 下面是您的一些错误,因此对于每一个错误,请研究正确的Db2文档,直到您了解需要什么: 变量名不能以开头@ 显式事务控制、[工作]或[工作][到保存点…] 如果希望进行非默认错误检查和错误处理,则应使用处理程序和/或显式检查 如果要返回结果集,必须在从存储过程返回之前显式地打开一个游标 存储过程的结尾需要与分号不同的分隔符。例如,许多人使用@或!指示复合SQL块的结束。您需要配置GUI来告诉它使用哪个分隔符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文档,直到您了解需要什么
从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;