Хранимая процедура SQL Неизвестно Где Предложение - PullRequest
0 голосов
/ 17 июня 2011

Есть ли способ написать хранимый в SQL процесс, в котором до времени выполнения неизвестно, сколько параметров нужно включить в предложение where и какие столбцы эти целевые?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Вы можете создать динамический sql в хранимой процедуре, а затем выполнить его. Я бы не рекомендовал делать это, но это вариант.

Если вы идете по этому пути, обязательно прочитайте эту статью . Внимательно прочитайте.

UPDATE:

Отказ от ответственности - статья выше относится только к SQL Server. Хотя некоторые из них могут все еще применяться (я не знаю достаточно об Oracle, чтобы сказать так или иначе).

Я бы порекомендовал взглянуть на эту статью для получения специфической информации для Oracle по динамическому SQL.

1 голос
/ 17 июня 2011

Если у вас есть много столбцов, по которым вы можете искать, тогда создание динамического оператора SQL будет проще, но ... вам нужно беспокоиться о внедрении SQL

ИЛИ

, если вы знаетев столбцах, по которым будет производиться поиск, создайте необязательный параметр для каждого из этих столбцов и присвойте им значение по умолчанию, равное null

Редактировать: добавлен пример на сервере sql, но его легко переносить в oracle

CREATE PROCEDURE dbo.test
(
    @col1   varchar(50) = null,
    @col2   int = null,
    @col3   datetime = null
)
AS

    SELECT  col1, col2, col3
    FROM    someTable
    WHERE   (@col1 IS NULL OR col1 = @col1)
    AND     (@col2 IS NULL OR col2 = @col2)
    AND     (@col3 IS NULL OR col3 = @col3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...