Как я могу вызвать хранимую процедуру DB2 с параметрами OUT, используя IntelliJ / DataGrip? - PullRequest
0 голосов
/ 11 октября 2019

Определение процедуры:

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' );

Я получаю этот экран, и я понятия не имею, что это значит.

enter image description here

Я перепробовал все перестановки флажков в настройках -> база данных -> пользовательские параметры.

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Похоже, что DataGrip версии 2019.2.5 обрабатывает выходные параметры хранимых процедур более враждебно по сравнению с другими инструментами базы данных GUI.

К счастью, существует много альтернативных бесплатных инструментов, таких как IBM Data Studio, DBeaver,DB-Visualizer, Squirrel-SQL и т. Д., Некоторые из которых более удобны для Db2.

Для экрана, который вы показываете в своем вопросе, он (неправильно) отключит кнопку «Выполнить» до тех пор, пока вы не введетезначение для указанного параметра, а затем нажмите Enter. Это кажется нежелательным поведением по умолчанию.

Я бы ожидал, что DataGrip распознает, что параметр хранимой процедуры, определенный как «OUT», не должен требовать какой-либо инициализации, и поэтому не должен отображать диалоговое окно, ожидающее значение перед ним. включает кнопку Выполнить (если нет других параметров OUT или INOUT).

Замечу, что если вы замените «?»Индикатор выходного параметра по имени переменной с подходящим типом данных, после чего хранимая процедура будет выполнена и не отобразит диалоговое окно, которое вы показываете в своем вопросе. Например:

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 / themes / 200381555-DataGrip

0 голосов
/ 12 октября 2019

Параметр User Parameters не охватывает этот случай, потому что это параметр OUT, а не user. Итак, теперь единственный вариант - написать код самостоятельно. Пожалуйста, прокомментируйте и проголосуйте за билет.

https://youtrack.jetbrains.com/issue/DG-5865

...