Solved

Cannot find the object "@dbName"

Posted on 2009-05-15
5
623 Views
Last Modified: 2012-05-07
Can anyone tell me what I can do to make this work?  The stored procedure is altered successfully, but when I try to run it with the command to execute it I get the following error:

EXEC sbs_ClearAllData 'Account'

Msg 4902, Level 16, State 1, Procedure sbs_ClearAllData, Line 16
Cannot find the object "dbo.@dbName" because it does not exist or you do not have permissions.
ALTER PROCEDURE sbs_ClearAllData
	@dbName varchar(50)  <-- This is line 16, fyi
 
AS
BEGIN
 
	SET NOCOUNT ON;	
 
	ALTER TABLE [dbo].[@dbName] NOCHECK CONSTRAINT ALL;
 
	IF OBJECTPROPERTY(object_id('@dbName'), 'TableHasForeignRef') = 1  
		DELETE FROM [dbo].[@dbName]  
	else   
		TRUNCATE TABLE [dbo].[@dbName]
 
	ALTER TABLE [dbo].[@dbName] CHECK CONSTRAINT ALL
 
	IF OBJECTPROPERTY(object_id('@dbName'), 'TableHasIdentity') = 1   
	DBCC CHECKIDENT ('@dbName', RESEED, 0)
 
	-- Populate TransactionCategory
	IF (SELECT COUNT(*) FROM TransactionCategory) = 0
	BEGIN
		INSERT INTO TransactionCategory
			(Id, Code, Description, IsCredit)
		VALUES
			(NEWID(), 'D', 'Debit', 0)
		INSERT INTO TransactionCategory
			(Id, Code, Description, IsCredit)
		VALUES
			(NEWID(), 'C', 'Credit', 1)
	END
 
END

Open in new window

0
Comment
Question by:bakerOSU333
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 500 total points
ID: 24399920
>ALTER TABLE [dbo].[@dbName] NOCHECK CONSTRAINT ALL;
you cannot run that without dynamic sql.


exec ('ALTER TABLE [dbo].[' + @dbName + '] NOCHECK CONSTRAINT ALL')

Open in new window

0
 
LVL 75

Expert Comment

by:Aneesh Retnakaran
ID: 24399927
DBCC CHECKIDENT '@dbName, RESEED, 0)   -- no quotes
0
 
LVL 31

Expert Comment

by:James Murrell
ID: 24399946
Personally i would check you have permission for that server, not just read access
0
 

Author Comment

by:bakerOSU333
ID: 24400016
angellll,

how would I fix this section of the code now?  it's closer to working, but I need to make the dbName become a column name for the id property and here is the error I get with the code snip after that:

Msg 207, Level 16, State 1, Line 1
Invalid column name 'Account'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'TableHasForeignRef'.

EXEC ('IF OBJECTPROPERTY(object_id("' + @dbName + '"), "TableHasForeignRef") = 1  
            DELETE FROM [dbo].['+ @dbName + ']  
      else  
            TRUNCATE TABLE [dbo].[' + @dbName + ']')
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24400196
please try this:
EXEC ('IF OBJECTPROPERTY(object_id(''' + @dbName + '''), ''TableHasForeignRef'') = 1  
            DELETE FROM [dbo].['+ @dbName + ']  
      else  
            TRUNCATE TABLE [dbo].[' + @dbName + ']')

Open in new window

0

Featured Post

Ready to get started with anonymous questions?

It's easy! Check out this step-by-step guide for asking an anonymous question on Experts Exchange.

Question has a verified solution.

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

Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…

617 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