select a.name,b.Name from @A a join @B b on a.Aname=b.Bname
刚刚试了以下,采用下面句子更简单: set nocount on use NETCMS goselect a.name,b.name from (select name,xtype from syscolumns where id in ( select id from sysobjects where name='合同表' and xtype='U' )) a, (select name,xtype from systypes ) b where a.xtype=b.xtype set nocount off现在不明白的是如何写存储过程:就是要求输入为表名,输出为一个表(这个表名的所有字段和字段类型组成),请高手不吝赐教!谢谢! :)
to zjmym(缘木) ,因为SQL联机帮助中说: 尽可能使用表变量而不使用临时表。table 变量有以下优点: table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。 在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:INSERT INTO table_variable EXEC 存储过程。SELECT select_list INTO table_variable 语句。在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。
from @A a join @B b on a.Aname=b.Bname
set nocount on
use NETCMS
goselect a.name,b.name
from
(select name,xtype
from syscolumns
where id in
(
select id
from sysobjects
where name='合同表'
and xtype='U'
)) a,
(select name,xtype
from systypes
) b
where a.xtype=b.xtype
set nocount off现在不明白的是如何写存储过程:就是要求输入为表名,输出为一个表(这个表名的所有字段和字段类型组成),请高手不吝赐教!谢谢! :)
尽可能使用表变量而不使用临时表。table 变量有以下优点: table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:INSERT INTO table_variable EXEC 存储过程。SELECT select_list INTO table_variable 语句。在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。