中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!
作者:未知 时间:2005-07-27 23:41 出处:CSDN 责编:chinaitpower
              摘要:SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!

1: 把函数改成标量函数,及只返回一个值的方法,该方法根据具体情况修改既可.在此不讨论该方法

2:用游标处理,用户自定义函数返回表.

具体问题:

CREATE function 函数(@字段1 as varchar(20),@字段2 as int ,@字段3 int)
returns @Time  table(列1  varchar(20),列2 datetime,列3 varchar(8000))
as
begin
--一系列操作后,插入数据到@Time
end

select dbo.函数('a',1,2,3)

返回正确结果


现在我就是想把函数参数,换成一个表的变量来代替!!

select dbo.函数(a.column1,a.coulmn2,coulmn3,a.column4) from 表 a

就不行。请问怎么改?一定要改成标量函数吗??

这样的话可以用游标,不过性能很低

if exists(select 1 from [tempdb]..[sysobjects] where id=object_id('[tempdb]..[#]'))
drop table [tempdb]..[#]
go
create table #(列1  varchar(20),列2 datetime,列3 varchar(8000))
declare cur cursor for select column1,column2,column3 from 表
open cur
declare @column1 varchar(20)
declare @column2 varchar(20)
declare @column3 varchar(20)
fetch next from cur into @column1,@column2,@column3
while @@fetch_status=0
begin
     insert # select * from [dbo].函数(@column1,@column2,@column3)
     fetch next from cur into @column1,@column2,@column3
end
close cur
deallocate cur

select * from #
drop table #


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有