sql-server - SQL 到 IBMDB2 的语法问题
问题描述
我正在尝试在 IBMDB2 中执行以下 SQL 脚本,但无法为 IBMDB2 获取语法正确的脚本;
BEGIN TRY
BEGIN TRANSACTION
if not exists (select * from AAA.BBBB WHERE COL1='[Param.1]' and COL2=[Param.2] and COL3='[Param.3]')
begin
INSERT INTO PRODFILE.MESUPPF (COL1, COL2, COL3, COL4, COL5, COL6)
VALUES( '[Param.1]', [Param.2], '[Param.3]', '[Param.4]' , '[Param.5]', '[Param.6]' )
end
else
begin
update AA.BB set COL1='[Param.4]',COL2='[Param.5]',COL3='[Param.6]' WHERE COL4='[Param.1]' and COL5=[Param.2] and COL6='[Param.3]')
end
Select 'Success' as Message, 'S' as MessageType
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
INSERT INTO ERROR_LOG (LOGTM,LOGTX) VALUES (getdate(),CAST(ERROR_LINE()AS VARCHAR(4)) + ERROR_MESSAGE())
Select 'Error' as Message, 'E' as MessageType
END CATCH
解决方案
DB2 for IBM i 不允许在 SQL 例程之外执行复合 sql 语句。
请参阅CREATE PROCEDURE (SQL),了解如何使用其中的 DB2 方言创建这样的例程。
推荐阅读
- c# - 按 DataGridRowHeader 中心对齐数字
- angular - Angular 和 Karma:无法绑定到“列表”,因为它不是“pq-button”的已知属性
- c# - Expression.Call 忽略 Null 值
- php - 无法修改 config.inc.php
- mongodb - MongoNetworkError:第一次连接时无法连接到服务器-办公网络
- javascript - $('.close').on 不是函数
- python - Errno 2 No such File or Directory on 2 splits
- c# - 如何将两个字符串值相乘并将结果以“,”作为分隔符存储?
- laravel - 如何用 Eloquent 实现这个复杂的查询?
- javascript - 在JS中如何将字符串类型的十六进制转换为数字?