sql2k的存储过程的参数可不可以是talbe类型的?

jouwei 2005-10-28 04:24:20
是不是还同时可以是output?如果写的话怎么写?我这样写不行:
CREATE PROCEDURE ComputeRiPHBB(@strBDate varchar(10),@strEDate varchar(10),@tempRiPHBB table OUTPUT )
AS
....
INSERT INTO @tempRiPHBB(...) values(...)
....
直接报错:
服务器: 消息 156,级别 15,状态 1,过程 ComputeRiPHBB,行 21
在关键字 'table' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,过程 ComputeRiPHBB,行 99
必须声明变量 '@tempRiPHBB'。
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jouwei 2005-11-01
  • 打赏
  • 举报
回复
zlp321002(飘过):使用临时表在并行操作时回出问题,因为临时表在同一个存储过程内都是可见的,会造成数据混乱,如果锁定也比较麻烦。
Andy__Huang 2005-10-28
  • 打赏
  • 举报
回复
象你這種情況一般不用存儲過程處理,而是用函數處理,因為函數可以反回表,而存儲過程不能返回表

520zyb 2005-10-28
  • 打赏
  • 举报
回复
用函数可以是TABLE的返回
CREATE FUNCTION ComputeRiPHBB(@strBDate varchar(10),@strEDate varchar(10))
RETURNS @tempRiPHBB table(id int)
as

...
insert @tempRiPHBB ...
...

RETURN
go
zlp321002 2005-10-28
  • 打赏
  • 举报
回复
--用临时表啊
CREATE PROCEDURE ComputeRiPHBB(@strBDate varchar(10),@strEDate varchar(10))
AS
Begin
Create table #(.....)
....
INSERT INTO #(...) values(...)

select * from #
End

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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