R*********r 发帖数: 225 | 1 IF (2>1)
SELECT 1 as col1 INTO #test
ELSE
BEGIN
IF OBJECT_ID(N'tempdb.dbo.#test') IS NOT NULL DROP TABLE #test
SELECT 2 as col1 INTO #test
END
上面这个语句报错:
Msg 2714, Level 16, State 1, Line 7
There is already an object named '#test' in the database.
把#test换成permenant table就没问题,请问这个怎么解决? | a9 发帖数: 21638 | 2 if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb
..#test') and type='U')
drop table #test
select 1 as col1 into #test
【在 R*********r 的大作中提到】 : IF (2>1) : SELECT 1 as col1 INTO #test : ELSE : BEGIN : IF OBJECT_ID(N'tempdb.dbo.#test') IS NOT NULL DROP TABLE #test : SELECT 2 as col1 INTO #test : END : 上面这个语句报错: : Msg 2714, Level 16, State 1, Line 7 : There is already an object named '#test' in the database.
| S*****0 发帖数: 538 | 3 这个没问题,刚试过。 估计,是#test table 需要先定义,不然,SQL Server
paser 会遇到SELECT ...INTO #test 就定义一次#test, 导致错误 。
IF OBJECT_ID(N'tempdb.dbo.#test') IS NOT NULL DROP TABLE #test
CREATE TABLE #test(col1 int)
IF (2>1)
INSERT INTO #test(col1)
SELECT 1 as col1
ELSE
BEGIN
INSERT INTO #test(col1)
SELECT 2 as col1
END
【在 R*********r 的大作中提到】 : IF (2>1) : SELECT 1 as col1 INTO #test : ELSE : BEGIN : IF OBJECT_ID(N'tempdb.dbo.#test') IS NOT NULL DROP TABLE #test : SELECT 2 as col1 INTO #test : END : 上面这个语句报错: : Msg 2714, Level 16, State 1, Line 7 : There is already an object named '#test' in the database.
| R*********r 发帖数: 225 | 4 yeah,这个是工作的。多谢。
不过如果我想让#test的结构在不同的条件下完全不一样就不行了,不好事先定义。
下面两个例子,第一个报错,说#Test 已经存在,但是如果我把它换成一个permanent
table就完全没问题。
BTW: 用的是SQL SERVER 2008 R2
IF (2>1)
BEGIN
IF OBJECT_ID(N'tempdb.dbo.#Test','U') IS NOT NULL DROP TABLE #Test
SELECT 1 AS col1 into #Test
END
ELSE
BEGIN
IF OBJECT_ID(N'tempdb.dbo.#Test','U') IS NOT NULL DROP TABLE #Test
SELECT 2 as col1 INTO #Test
END
IF (2>1)
BEGIN
IF OBJECT_ID(N'dbo.test','U') IS NOT NULL DROP TABLE dbo.test
SELECT 1 AS col1 into dbo.test
END
ELSE
BEGIN
IF OBJECT_I
【在 S*****0 的大作中提到】 : 这个没问题,刚试过。 估计,是#test table 需要先定义,不然,SQL Server : paser 会遇到SELECT ...INTO #test 就定义一次#test, 导致错误 。 : IF OBJECT_ID(N'tempdb.dbo.#test') IS NOT NULL DROP TABLE #test : CREATE TABLE #test(col1 int) : IF (2>1) : INSERT INTO #test(col1) : SELECT 1 as col1 : ELSE : BEGIN : INSERT INTO #test(col1)
| a9 发帖数: 21638 | 5 select into 会自动创建表,你第一次运行的时候肯定不会报这个提示。
你再次运行就有这个错误提示了。
permanent
【在 R*********r 的大作中提到】 : yeah,这个是工作的。多谢。 : 不过如果我想让#test的结构在不同的条件下完全不一样就不行了,不好事先定义。 : 下面两个例子,第一个报错,说#Test 已经存在,但是如果我把它换成一个permanent : table就完全没问题。 : BTW: 用的是SQL SERVER 2008 R2 : IF (2>1) : BEGIN : IF OBJECT_ID(N'tempdb.dbo.#Test','U') IS NOT NULL DROP TABLE #Test : SELECT 1 AS col1 into #Test : END
| R*********r 发帖数: 225 | 6 nope,第一次就报错。
【在 a9 的大作中提到】 : select into 会自动创建表,你第一次运行的时候肯定不会报这个提示。 : 你再次运行就有这个错误提示了。 : : permanent
|
|