并不是所有的INSERT命令都能够在数据表变量上操作。例如,你不能在向数据表变量插入值的时候使用EXEC命令。执行一个存储过程或者插入值到数据表变量的字符串命令会返回一个错误。同样,不是所有的SELECT 命令都能够在数据表变量上操作而且你不能使用SELECT INTO 命令来插入数据到一个数据表变量中去。
CREATE PROCEDURE TestName
AS
DECLARE @TableId TABLE
(table_id INT IDENTITY NOT NULL
primary key nonclustered,
id INT NOT NULL,
name sysname NOT NULL
DEFAULT 'UNKNOWN',
type char(2) NOT NULL
DEFAULT '9',
crdate datetime NOT NULL
DEFAULT current_timestamp)
INSERT @TableId (id, name, type, crdate)
SELECT id, 'test_' + name, type, crdate FROM tempdb..sysobjects
SELECT * FROM @TableID
GO
exec TestName
GO