首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用存储过程未知对象类型有此问题

调用存储过程未知对象类型有此问题
EN

Stack Overflow用户
提问于 2019-05-07 21:29:25
回答 1查看 1.5K关注 0票数 0

我正在尝试编写一个需要调用存储过程的查询。但它总是会抛出一个错误:

用于CREATE、DROP或ALTER语句的未知对象类型'TABLEIXICHistoricalData‘。

这是查询:

代码语言:javascript
运行
复制
USE ETLCourse

DECLARE @LOOP TABLE 
              (
                  ID INT IDENTITY(1,1),
                  TableName NVARCHAR(100)
              )

INSERT INTO @LOOP (TableName)
    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME LIKE '%_Stocks%'

DECLARE @b INT = 1, @m INT, @t NVARCHAR(100)

SELECT @m = MAX(ID) FROM @LOOP

WHILE @b <= @m
BEGIN
    SELECT @t = TableName 
    FROM @LOOP 
    WHERE ID = @b

    EXECUTE [dbo].[stp_BuildNormalizedTable] @t

    SET @b = @b + 1
END

下面是程序:

代码语言:javascript
运行
复制
ALTER PROCEDURE [dbo].[stp_BuildNormalizedTable]
    @table NVARCHAR(100)
AS
BEGIN
    DECLARE @cleanTable NVARCHAR(100),
            @s NVARCHAR(MAX)

    SET @cleanTable = REPLACE(@table, '_Stocks', 'HistoricalData')

    SET @s = 'CREATE TABLE' + @cleanTable + '(ID INT IDENTITY(1,1), Price DECIMAL(13, 4), PriceDate DATE)
              INSERT INTO' + @cleanTable + '(Price,PriceDate) SELECT [Adj Close],[Date] FROM'
              + @table + ' ORDER BY Date ASC'

    --PRINT @s
    EXECUTE sp_executesql @s
END

它应该复制两个特定的列,并使用@Loop表和过程创建一个新表。

EN

Stack Overflow用户

回答已采纳

发布于 2019-05-07 21:45:06

您需要在“创建表”和“插入”和“从”中添加“空格”

代码语言:javascript
运行
复制
declare @s nvarchar(max)
declare @cleantable nvarchar(100)
declare @table nvarchar(100)
set @cleantable = 'aaa'
set @table = 'bbb'

SET @s = 'CREATE TABLE' + @cleanTable + '(ID INT IDENTITY(1,1),Price Decimal(13,4),PriceDate DATE)
Insert into' + @cleanTable
+ '(Price,PriceDate) SELECT [Adj Close],[Date] FROM'
+ @table + ' ORDER BY Date ASC'

print @s

输出:

代码语言:javascript
运行
复制
CREATE TABLEaaa(ID INT IDENTITY(1,1),Price Decimal(13,4),PriceDate DATE)
Insert intoaaa(Price,PriceDate) SELECT [Adj Close],[Date] FROMbbb ORDER BY Date ASC

使用“打印”检查查询。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56030705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档