我正在尝试从存储过程创建表,但在执行过程时,我收到了这些错误:
Msg 343,Level 15,State 1,Line 1
未知对象类型' TABLEPunith_INC_T_Partner_PlusEligible_YE_APJC'用于CREATE,DROP或ALTER语句 消息4701,级别16,状态1,行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
我花了好几个小时但是我无法执行存储过程,当我尝试使用不同类型的程序时,但是没有创建表。
有人请帮帮我 在此先感谢。
答案 0 :(得分:4)
SET @SQLSTR = 'CREATE TABLE_' + @OBJECTNM + '(
Country VARCHAR(255),
缺少空格,将其添加到上面放_的位置
@SQLSTR
正在阅读CREATE TABLEPTEST(
而不是CREATE TABLE PTEST(
编辑,评论不清楚,请用下面的行完全替换你的行。上面的方法不起作用,因为我使用下划线作为占位符,以便您可以看到缺失空间的位置。
SET @SQLSTR = 'CREATE TABLE ' + @OBJECTNM + '(