Я пишу хранимую процедуру для выполнения некоторых общих проверок, в хранимой процедуре у меня есть код, подобный следующему, чтобы избежать создания слишком большого числа @variables
:
IF type = 'spl'
THEN BEGIN
SELECT col1, col4, col5, col9, col20, ... INTO #tmp
FROM tbl1
WHERE primary_key = unique_id
END
ELSE BEGIN
SELECT col1, col5, col7, col8, col19, ... INTO #tmp
FROM tbl2
WHERE primary_key = unique_id
END
Хотя эти два INSERT
могутникогда не запускается одновременно, это все равно вызывает ошибку #tmp table already exist
, и хранимая процедура не может быть создана.
Есть ли какой-нибудь общий способ для этого?
Следующее, безусловно, возможно, но выглядит хуже, чем объявление десятков @variables
.Но это единственное, что я могу придумать, атм.
SELECT *
INTO #TEMP
FROM
(SELECT
CASE WHEN type = 'spl'
THEN a.col1
ELSE b.col1
END,
...
FROM ... CROSS JOIN ...
)