2009-11-07 2 views
0

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

Так что я могу сделать что-то вроде:

@p1 <-- my parameter 


IF (@p1 ???) -- include users 
    SELECT * FROM USERS 


IF (@p1 ???) -- include employees 
    SELECT * FROM employees 

IF (@p1 ???) -- iclude customers 
    SELECT * FROM CUSTOMERS 

Я предполагаю, что я должен буду сделать некоторые битные стук, но не знает, как это сделать в SQL.

Update

Я на самом деле делаю СОЮЗ рода.

+2

хранимая процедура, которая возвращает различные фасонные наборы результатов в зависимости от параметров разрушит опустошение с большинством клиентских средств. Вы уверены, что хотите, чтобы так поступали? –

ответ

1

Если @ p1 - это int или какой-либо его вариант, например bigint или tinyint, возможно, вы можете использовать поразрядные и.
Вот пример:

IF (@p1 & 1 = 1) 
IF (@p1 & 4 = 4) 
2

Вместо того, чтобы иметь Т-SQL инлайн, вы часто лучше создавать отдельные хранимые процедуры и их вызова.

Это связано с тем, что в расчете на один пакет хранится только один тайник.

Также, обратите внимание на комментарий Ремуса: вы нарушаете правило единой ответственности. Это приводит к ошибкам обслуживания.

Это может быть другая история, если вы всегда возвращаются одни и те же несколько результирующих наборов (MARS) ...