这个?
table
一种特殊的数据类型,用于存储结果集以供后续处理。该数据类型主要用于临时存储一组行,这些行将作为表值函数的结果集返回。语法
说明 使用 DECLARE @local_variable 声明 table 类型的变量。
table_type_definition ::=
TABLE ( { column_definition | table_constraint } [ ,...n ] ) column_definition ::=
column_name scalar_data_type
[ COLLATE collation_definition ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ]
[ ROWGUIDCOL ]
[ column_constraint ] [ ...n ] column_constraint ::=
{ [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
} table_constraint ::=
{ { PRIMARY KEY | UNIQUE } ( column_name [ ,...n ] )
| CHECK ( search_condition )
} 参数
table_type_definition与 CREATE TABLE 中定义表所用的信息子集相同的信息子集。表声明包括列定义、名称、数据类型和约束。允许的约束类型仅为 PRIMARY KEY、UNIQUE KEY 和 NULL。有关语法的更多信息,请参见 CREATE TABLE、CREATE FUNCTION 和 DECLARE @local_variable。collation_definition是由 Microsoft® Windows™ 区域设置和比较风格、Windows 区域设置和二进制表示法或 Microsoft SQL Server™ 排序规则组成的列的排序规则。
table
一种特殊的数据类型,用于存储结果集以供后续处理。该数据类型主要用于临时存储一组行,这些行将作为表值函数的结果集返回。语法
说明 使用 DECLARE @local_variable 声明 table 类型的变量。
table_type_definition ::=
TABLE ( { column_definition | table_constraint } [ ,...n ] ) column_definition ::=
column_name scalar_data_type
[ COLLATE collation_definition ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ]
[ ROWGUIDCOL ]
[ column_constraint ] [ ...n ] column_constraint ::=
{ [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
} table_constraint ::=
{ { PRIMARY KEY | UNIQUE } ( column_name [ ,...n ] )
| CHECK ( search_condition )
} 参数
table_type_definition与 CREATE TABLE 中定义表所用的信息子集相同的信息子集。表声明包括列定义、名称、数据类型和约束。允许的约束类型仅为 PRIMARY KEY、UNIQUE KEY 和 NULL。有关语法的更多信息,请参见 CREATE TABLE、CREATE FUNCTION 和 DECLARE @local_variable。collation_definition是由 Microsoft® Windows™ 区域设置和比较风格、Windows 区域设置和二进制表示法或 Microsoft SQL Server™ 排序规则组成的列的排序规则。
解决方案 »
- 求一sql语句
- 关于SQL SELECT 查询 高手帮忙!!
- 为何master表中,有几个系统表无法打开呀,这几个表都是大写字母的.
- 关于多表查询,形成报表的问题,请高手指点!
- 关于查询结果的显示顺序问题(在线等!!)
- 如何配置project server 2002 中的sharepoint配置问题??
- 学数据库有些日子了,设计了一个数据库,大家帮我看看我这个数据库,设计的怎么样啊,让你做,你怎么设计啊
- SQL Server 2005:显示系统表
- 有一个效率上的问题一直搞不懂如何才能够提高!
- 请高手解答:查询的结果有重复的,参与者接分
- 求助:怎样从SQL数据库中把text类型的数据读出来在ASP中显示
- 远程数据库同步问题(请邹建大哥赐教)
declare @t table(id int,code varchar(20))--使用表变量,insert数据
insert into @t select 1,'AAAA'
insert into @t1 select 1,'a'
select @t1报错:服务器: 消息 137,级别 15,状态 2,行 8
必须声明变量 '@t'。
@exec_sql nvarchar(500),
@str手术名称 nvarchar(500),
@i int,
@t1 table(手术ID bigint),
@t2 table( 手术ID bigint, 手术日期 datetime, 转流医生姓名 nvarchar(50), 科室名称 nvarchar(50), 患者姓名 nvarchar(50), 病历号 nvarchar(50),住院号 nvarchar(50),手术名称 nvarchar(100))
if @strsql=''
begin
set @exec_sql=N'insert into @t1 select 手术ID from view_转流 '
end
else
begin
set @exec_sql=N'insert into @t1 select 手术ID from view_转流 where '+@strsql
end
exec sp_executesql @exec_sql
set @i=( select count(*) from @t1)
while @i>0
begin
set @opeID=(select top 1 手术ID from @t1)
exec usp_curCombine 'view_转流_手术名称','手术名称','手术ID',@opeID,@str手术名称 output
insert into @t2(手术ID,手术日期, 转流医生姓名,科室名称,患者姓名,病历号,住院号) select * from view_转流 where 手术ID=@opeID
update @t2 set 手术名称=@str手术名称 where 手术ID=@opeID
delete @t1 where 手术ID=@opeID
set @i=@i-1
end
select *from @t2服务器: 消息 156,级别 15,状态 1,行 5
在关键字 'table' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,行 7
必须声明变量 '@strsql'。
服务器: 消息 156,级别 15,状态 1,行 11
在关键字 'else' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,行 13
必
须声明变量 '@strsql'。
服务器: 消息 137,级别 15,状态 1,行 16
必须声明变量 '@t1'。
服务器: 消息 137,级别 15,状态 1,行 19
必须声明变量 '@t1'。
服务器: 消息 137,级别 15,状态 1,行 21
必须声明变量 '@t2'。
服务器: 消息 137,级别 15,状态 1,行 22
必须声明变量 '@t2'。
服务器: 消息 137,级别 15,状态 1,行 23
必须声明变量 '@t1'。
服务器: 消息 137,级别 15,状态 1,行 26
必须声明变量 '@t2'。
存储过程:
CREATE PROCEDURE [uspORIS_select视图2]
@strsql nvarchar(500)
AS
declare @opeID bigint,
@exec_sql nvarchar(500),
@str手术名称 nvarchar(500),
@i int
declare @t1 table(手术ID bigint)
declare @t2 table( 手术ID bigint, 手术日期 datetime, 转流医生姓名 nvarchar(50), 科室名称 nvarchar(50), 患者姓名 nvarchar(50), 病历号 nvarchar(50),住院号 nvarchar(50),手术名称 nvarchar(100))
if @strsql=''
begin
set @exec_sql=N'insert into @t1 select 手术ID from view_转流 '
end
else
begin
set @exec_sql=N'insert into @t1 select 手术ID from view_转流 where '+@strsql
end
exec sp_executesql @exec_sql
set @i=( select count(*) from @t1)
while @i>0
begin
set @opeID=(select top 1 手术ID from @t1)
exec usp_curCombine 'view_转流_手术名称','手术名称','手术ID',@opeID,@str手术名称 output
insert into @t2(手术ID,手术日期, 转流医生姓名,科室名称,患者姓名,病历号,住院号) select * from view_转流 where 手术ID=@opeID
update @t2 set 手术名称=@str手术名称 where 手术ID=@opeID
delete @t1 where 手术ID=@opeID
set @i=@i-1
end
select *from @t2
GO
查询分析器里调试
uspORIS_select视图2 '转流医生姓名=''医生甲'''报错
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@t1'。(所影响的行数为 0 行)
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:INSERT INTO table_variable EXEC 存储过程。SELECT select_list INTO table_variable 语句。在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。
涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。
不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@t1'。 总报这样的错误。
---邹老大的原话
---邹老大的原话
-------精简,明了
declare @t1 table(a1 int,a2 nvarchar(50))
insert into @t1 select 1,'a'
select @t1报错:服务器: 消息 137,级别 15,状态 2,行 8
必须声明变量 '@t'。
insert into @t1 select 1,'a'
---select @t1
select * from @t1 ---注意表变量查询时的语法....