我想從存儲過程創建表,但在執行過程中,我得到這些錯誤:如何從存儲過程創建表?
消息343,級別15,狀態1,行1
未知的對象類型「TABLEPunith_INC_T_Partner_PlusEligible_YE_APJC」使用在CREATE,DROP或ALTER語句中。
Msg 4701,Level 16,State 1,Line 1
找不到對象「PTEST」,因爲它不存在或您沒有權限。
這是我的存儲過程
ALTER PROCEDURE [dbo].[SP_PTEST2]
AS
BEGIN
DECLARE @OBJECTNM NVARCHAR(100)
DECLARE @SQLSTR NVARCHAR(MAX)
SET @OBJECTNM = 'PTEST'
IF (EXISTS (SELECT 1 FROM SYS.OBJECTS WHERE NAME = 'PTEST'))
BEGIN
SET @SQLSTR = 'DROP TABLE ' + @OBJECTNM
EXEC(@SQLSTR)
END
SET @SQLSTR = 'CREATE TABLE' + @OBJECTNM + '(
Country VARCHAR(255),
BE_Geo_ID INT,
BE_Geo_Name VARCHAR(255),
Certification VARCHAR(200),
)'
EXEC(@SQLSTR)
SET @SQLSTR = 'TRUNCATE TABLE ' + @OBJECTNM
EXEC(@SQLSTR)
SET @SQLSTR = 'BULK INSERT ' + @OBJECTNM +
' FROM ''C:\Desktop\Part plus.csv''
WITH (
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
FIRSTROW = 2
)'
EXEC(@SQLSTR)
End
我花了幾個小時就這一點,但我無法執行存儲過程,還當我試圖與執行不同類型的程序,但不創建表。
有人請幫助我。
在此先感謝。
備註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並將其他內容用作前綴 - 或者根本沒有前綴! –
感謝marc_s的建議,我已更新SP名稱並嘗試過。 – Punith