Откройте параметры процедуры DB2 по умолчанию с помощью таблиц SYSCAT - PullRequest
0 голосов
/ 23 марта 2012

Как и Oracle, DB2 поддерживает параметры по умолчанию в хранимых процедурах.Синтаксис Oracle:

CREATE OR REPLACE PROCEDURE p_default (
  p_in_number   IN  number   := 0,
  p_out_number  OUT number,
  p_in_varchar  IN  varchar2 := '0',
  p_out_varchar OUT varchar2,
  p_in_date     IN  date     := date '1981-07-10',
  p_out_date    OUT date
)

Синтаксис DB2:

CREATE PROCEDURE p_default (
  IN  p_in_number   INTEGER DEFAULT(0),
  OUT p_out_number  INTEGER,
  IN  p_in_varchar  VARCHAR(10) DEFAULT('0'),
  OUT p_out_varchar VARCHAR(10),
  IN  p_in_date     DATE DEFAULT('1981-07-10'),
  OUT p_out_date    DATE
)

С помощью Oracle я могу определить значения по умолчанию, используя этот запрос:

SELECT argument_name, defaulted FROM all_arguments WHERE object_id = :proc_id

Как я могу обнаружить этоDB2 выбирает из SYSCAT таблиц?Я не вижу ни одного полезного столбца в SYSCAT.PROCPARMS или SYSCAT.FUNCPARMS.Обратите внимание, я не возражаю против вызова любой хранимой процедуры из SYSPROC, если такая процедура существует ...

Обратите внимание, я задал такой же вопрос о SQL Server:

Обнаружение параметров процедуры SQL Server по умолчанию с использованием таблиц SYS или INFORMATION_SCHEMA

1 Ответ

2 голосов
/ 23 марта 2012

(Предполагается, что вы ищете информацию о DB2 Linux / Unix / Windows, она может отличаться для других платформ)

Вы можете использовать представление каталога SYSCAT.ROUTINEPARMS длянайти эту информацию.В нем перечислены все типы параметров, которые может принимать функция (может быть несколько строк, если процедура имеет несколько подписей), и, если применимо, их значения по умолчанию (в столбце с меткой DEFAULT).Если значение по умолчанию не указано, этот столбец будет NULL.

Например, если вы хотите увидеть входные параметры для SYSIBMADM.SUBMIT (который имеет необязательные параметры), выможно использовать этот запрос:

SELECT *
FROM SYSCAT.ROUTINEPARMS
WHERE ROUTINESCHEMA='SYSIBMADM'
  AND ROUTINENAME  ='SUBMIT'
  AND ROWTYPE IN ('B', 'P')

ROWTYPE из B допускает как входные, так и выходные переменные, а P только для ввода.Другие типы описаны в информационном центре, который я связал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...