Проблема в создании хранимой процедуры - PullRequest
2 голосов
/ 18 ноября 2010

Я создаю хранимую процедуру, но она выдает ошибку. Кто-нибудь может сказать мне, если я что-то не так делаю?

CREATE TABLE tbl1 (ID int)
INSERT INTO tbl1 SELECT 1
CREATE TABLE tbl2 (ID int)
INSERT INTO tbl2 SELECT 2

CREATE PROCEDURE QOTD (@source INT)
AS 
BEGIN
 IF @source = 1 
 SELECT ID INTO #tmpID FROM tbl1 
 ELSE
 SELECT ID INTO #tmpID FROM tbl2 

 SELECT ID FROM #tmpID
END

ОШИБКА: уже существует объект с именем '#tmpID' в базе данных.

Ответы [ 3 ]

7 голосов
/ 18 ноября 2010

Иногда компилятор T-SQL запутывается и не осознает, что будет следовать только одна сторона IF.

CREATE PROCEDURE QOTD (@source INT)
AS 
BEGIN
 CREATE TABLE #tmpID(ID int)
 IF @source = 1 
 INSERT INTO #tmpID SELECT ID FROM tbl1 
 ELSE
 INSERT INTO #tmpID SELECT ID  FROM tbl2 

 SELECT ID FROM #tmpID
END
1 голос
/ 18 ноября 2010

Вам не нужно использовать временную таблицу. Этого должно быть достаточно:

CREATE PROCEDURE QOTD (@source INT) 
AS  
BEGIN 
 IF @source = 1
    SELECT ID FROM tbl1  
 ELSE 
    SELECT ID  FROM tbl2  
END 
0 голосов
/ 18 ноября 2010

В вашей базе данных уже существует временная таблица #tmpID.Попробуйте использовать это перед вашей процедурой.

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