簡體   English   中英

如何從存儲過程創建表?

[英]How to Create Table from Stored Procedure?

我正在嘗試從存儲過程創建表,但是在執行該過程時,出現以下錯誤:

信息343,第15層,狀態1,第1行
在CREATE,DROP或ALTER語句中使用的未知對象類型'TABLEPunith_INC_T_Partner_PlusEligible_YE_APJC'。
消息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

我花了幾個小時在上面,但是我無法執行存儲過程,也嘗試使用其他類型的過程執行但未創建表。

有人請幫我。
提前致謝。

SET @SQLSTR = 'CREATE TABLE_'  + @OBJECTNM + '(
    Country             VARCHAR(255),

缺少空格,請將其添加到上方的_位置。
@SQLSTR正在讀取CREATE TABLEPTEST(而不是CREATE TABLE PTEST(

編輯,注釋不明確,將您的行替換為下面的行。 上面的方法不起作用,因為我使用下划線作為占位符,以便您可以看到丟失的空間在哪里。

SET @SQLSTR = 'CREATE TABLE '  + @OBJECTNM + '(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM