如何使用 IntelliJ/DataGrip 调用带有 OUT 参数的 DB2 存储过程?
How can I call a DB2 stored procedure with OUT params using IntelliJ/DataGrip?
程序定义:
CREATE OR REPLACE PROCEDURE MY_PROC (
OUT @STATUS INTEGER,
IN @STARTCODE NUMERIC(8),
IN @DRIVER VARCHAR(20) DEFAULT NULL,
IN @UNIT VARCHAR(20) DEFAULT NULL,
IN @TRAILER VARCHAR(20) DEFAULT NULL,
IN @ORDERNUM VARCHAR(10) DEFAULT NULL,
IN @USERID VARCHAR(10) DEFAULT NULL,
IN @DRIVER2 VARCHAR(20) DEFAULT NULL
)
我把这个 SQL 放到 IDE:
CALL LIB.ADD_DUTLINK ( ?, 99612, '0520', '101', 'TRL1', '13573333', 'A', '0085' );
我看到这个屏幕,但我不知道这意味着什么。
我已经尝试了设置 -> 数据库 -> 用户参数下的所有复选框排列。
与其他 GUI 数据库工具相比,DataGrip 版本 2019.2.5 似乎以更具敌意的方式处理存储过程输出参数。
幸运的是,有许多可供选择的免费工具,例如 IBM Data Studio、DBeaver、DB-Visualizer、Squirrel-SQL 等,其中一些对 Db2 更友好。
对于您在问题中显示的屏幕,它将(错误地)禁用 'Execute' 按钮,除非您为指示的参数输入一个值,然后按 Enter 键。这似乎是不受欢迎的默认行为。
我希望 DataGrip 能够识别定义为 "OUT" 的存储过程参数不需要任何初始化,因此在启用“执行”按钮之前不应显示等待值的对话框屏幕(如果没有其他 OUT 或 INOUT 参数)。
我注意到如果你替换“?” output-parameter indicator by a variable with a suitable datatype,那么存储过程将执行并且不会显示您在问题中显示的对话框屏幕。例如:
create or replace variable p_stat integer;
CALL LIB.ADD_DUTLINK ( p_stat, 99612, '0520', '101', 'TRL1', '13573333', 'A', '0085' );
也许您应该在 DataGrip 论坛上提出问题
https://intellij-support.jetbrains.com/hc/en-us/community/topics/200381555-DataGrip
用户参数设置不包括这种情况,因为它是 OUT
参数而不是 user
参数。所以,现在唯一的选择就是自己写代码。请发表评论并投票。
程序定义:
CREATE OR REPLACE PROCEDURE MY_PROC (
OUT @STATUS INTEGER,
IN @STARTCODE NUMERIC(8),
IN @DRIVER VARCHAR(20) DEFAULT NULL,
IN @UNIT VARCHAR(20) DEFAULT NULL,
IN @TRAILER VARCHAR(20) DEFAULT NULL,
IN @ORDERNUM VARCHAR(10) DEFAULT NULL,
IN @USERID VARCHAR(10) DEFAULT NULL,
IN @DRIVER2 VARCHAR(20) DEFAULT NULL
)
我把这个 SQL 放到 IDE:
CALL LIB.ADD_DUTLINK ( ?, 99612, '0520', '101', 'TRL1', '13573333', 'A', '0085' );
我看到这个屏幕,但我不知道这意味着什么。
我已经尝试了设置 -> 数据库 -> 用户参数下的所有复选框排列。
与其他 GUI 数据库工具相比,DataGrip 版本 2019.2.5 似乎以更具敌意的方式处理存储过程输出参数。
幸运的是,有许多可供选择的免费工具,例如 IBM Data Studio、DBeaver、DB-Visualizer、Squirrel-SQL 等,其中一些对 Db2 更友好。
对于您在问题中显示的屏幕,它将(错误地)禁用 'Execute' 按钮,除非您为指示的参数输入一个值,然后按 Enter 键。这似乎是不受欢迎的默认行为。
我希望 DataGrip 能够识别定义为 "OUT" 的存储过程参数不需要任何初始化,因此在启用“执行”按钮之前不应显示等待值的对话框屏幕(如果没有其他 OUT 或 INOUT 参数)。
我注意到如果你替换“?” output-parameter indicator by a variable with a suitable datatype,那么存储过程将执行并且不会显示您在问题中显示的对话框屏幕。例如:
create or replace variable p_stat integer;
CALL LIB.ADD_DUTLINK ( p_stat, 99612, '0520', '101', 'TRL1', '13573333', 'A', '0085' );
也许您应该在 DataGrip 论坛上提出问题 https://intellij-support.jetbrains.com/hc/en-us/community/topics/200381555-DataGrip
用户参数设置不包括这种情况,因为它是 OUT
参数而不是 user
参数。所以,现在唯一的选择就是自己写代码。请发表评论并投票。