存储过程中如何传递TABLE参数?

gaodz 2006-08-01 02:39:19
定义了一个存储过程,其中@安置费标准表为TABLE型参数
CREATE PROCEDURE dbo.安置费计算公式

--INPUT PARAMETERS
@截止日期 smalldatetime,
@出生日期 smalldatetime,
@安置费标准表 table (
AllocateChildPerAge numeric(10,2),
AllocateLaborer numeric(10,2),
AllocateBeforeRetire numeric(10,2),
AllocateBeforeRetirePerAgeInc numeric(10,2),
AllocateBeforeRetirePerAgeDec numeric(10,2),
AllocateRetired numeric(10,2),
),
....
)
--执行存储过程
DECLARE @自建房安置标准表 table(AllocateChildPerAge numeric(10,2),AllocateLaborer numeric(10,2),AllocateBeforeRetire numeric(10,2),AllocateBeforeRetirePerAgeInc numeric(10,2),AllocateBeforeRetirePerAgeDec numeric(10,2),AllocateRetired numeric(10,2))
INSERT @自建房安置标准表 SELECT * FROM GetAllocParms('自建房') --getallocparms为表值函数
EXEC 安置费计算公式 @cutoffdate,@出生日期,@自建房安置标准表,@缴费年限,@安置费标准,@缴费总额,@安置费抵缴,@社保补贴支付,@生活补助费
--------------------------------------------------------
错误:保存存储过程dbo.安置费计算公式时,提示:在关键字“table"附近有语法错误
...全文
418 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2006-09-26
  • 打赏
  • 举报
回复
怎么能这样呢,这样语法不正确,传递表名建立虚拟表。。呵呵。。
netbir 2006-09-26
  • 打赏
  • 举报
回复
可将函数和变量声明为 table 类型。table 变量可用于函数、存储过程和批处理中。

尽可能使用表变量而不使用临时表。table 变量有以下优点:

table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。
在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:

INSERT INTO table_variable EXEC 存储过程。

SELECT select_list INTO table_variable 语句。

在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。

在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。


涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。
不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。

WangZWang 2006-08-01
  • 打赏
  • 举报
回复
没有这种功能,可以转递表名在proc中建立
xyxfly 2006-08-01
  • 打赏
  • 举报
回复
参数可以为TABLE型么?

呵呵,印象中是不行

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧