Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Error 2714 when parsing stored procedure

Posted on 2004-08-02
8
Medium Priority
?
518 Views
Last Modified: 2008-02-01
I have stored procedure with several IF statements. In each IF I use SELECT .. INTO #temp but I get error 2714 (table already exists).
It is not true becouse only one IF will be run.

What can I do?
0
Comment
Question by:patrikt
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 54

Expert Comment

by:Ryan Chong
ID: 11692343
Try Drop the temp table 1st if it's exist, like:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourTableName]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[YourTableName]

...
0
 
LVL 12

Author Comment

by:patrikt
ID: 11692388
No way. Table does'not exests. I put drop before all selects but still have error.

It's only parsing error. It should work correctly when run.
0
 
LVL 54

Expert Comment

by:Ryan Chong
ID: 11692417
Can you post full scripts here?
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 5

Accepted Solution

by:
hkamal earned 750 total points
ID: 11693002
I had this and it is very frustrating. The best option :
1. If you're selecting the same columns, create the table upfront and use INSERT .. SELECT instead
2. If you're selecting out different columns/tables depending on the IF, use Dynamic SQL to create the table name; viz:
SELECT @sql="select * into #temptab from TableA"
EXEC (@sql)
Since Sybase doesn't see the select into at compile time, you avoid the error
0
 
LVL 5

Expert Comment

by:hkamal
ID: 11693013
I said Sybase when I meant SQL SERVER !
Works for both actually
0
 
LVL 7

Expert Comment

by:FDzjuba
ID: 11695127
after you have created temp table, don't forget to drop at the end of the sp, and before you start sp check that none of the temp tables exist and if they do drop them:

if object_id('#temp') is not null
begin
   drop table #temp
end
0
 
LVL 2

Expert Comment

by:nexusSam
ID: 11695304
FDzjuba, neither is necessary.
SQL appends the session ID to the temp table name (hence the 11-char name limit compared with 32 for permenant tables).
They are automatically destroyed when you exit a proc in which they were created.
As for checking for their existence, I wouls simply use a new name.
0
 
LVL 12

Author Comment

by:patrikt
ID: 11695412
Hkamal is right.

It it realy bug of parser. Parser hates "double" creating temp table in different branches of IF.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

One of the most important things in an application is the query performance. This article intends to give you good tips to improve the performance of your queries.
This month, Experts Exchange sat down with resident SQL expert, Jim Horn, for an in-depth look into the makings of a successful career in SQL.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

782 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question