我正在尝试运行此脚本。我正在使用它来对这些存储过程进行单元测试:
--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而不是运行存储过程,则脚本有效。但是,如果我一起运行它们,为什么不运行呢?有人可以告诉你是否有办法运行它?
答案 0 :(得分: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
语法,因为在SQL AS
中,关键字用于指定别名(例如SELECT Column1 AS Col1
或FROM table1 AS t1
)或计算列{{ 1}}。