1

我正在尝试运行此脚本。还有更多我正在使用它来对这些存储过程进行单元测试:

--StudentType   
    CREATE TYPE Student AS TABLE
    (
        Id varchar(19) NOT NULL primary key, 
        Count int NOT NULL
    );
    GO

    --Class
    CREATE PROCEDURE #Class_Data        
        @SList AS Student READONLY, 
        @RNumber VARCHAR(50)    

    AS
    BEGIN       
        INSERT INTO Class(ClassNumber, Count, RollNumber)
                SELECT
                    Id, Count, @RNumber From @SList 
    END


    GO

如果我先运行 Type 然后运行存储过程,则脚本有效。但是如果我一起运行它们为什么不运行呢?有人可以告诉是否有办法运行它?

4

1 回答 1

0

#指定一个临时存储过程。似乎这是 SQL2008 中未更新的旧功能(表参数是 SQL2008 中的新功能)以允许表参数。对于 SQL2000 (!) Books Online说:

SQL Server 2000 还支持临时存储过程 [...]。临时存储过程存储在 tempdb 中,并且在连接到 SQL Server 的早期版本(SQL7、6.5?!)时很有用。 ”

我会说临时存储过程是 SQL2000 中的一项旧功能,更不用说在 SQL2008 中了。

但是,如果您尝试创建一个非临时文件。SP 然后CREATE PROCEDURE Class_Data将成功执行。

此外,您应该避免使用@var AS type语法,因为 SQLAS关键字用于指定别名(例如SELECT Column1 AS Col1or FROM table1 AS t1)或计算列Column1 AS (expression) [PERSISTED]

于 2013-08-30T19:46:51.450 回答