求表值函数的用法

梅子 2016-07-28 08:19:58
表A:

select
VC_UI_CODE
,''
,VC_MT_NAME
,''
,VC_MT_NAME
,I_FM_DECIMAL
,VC_MI_DIRECTION
,''
,VC_MI_CARDNO
,''
,VC_MT_METERSET
,I_MI_SALECOUNT
,'' --表值函数返回值1
,'' --表值函数返回值2
,D_UI_CREATEDATE
,VC_O_NAME
,''
,[GUID]
from
View_2



select * from aa(View.Guid,'',1,0,0)


aa返回两个值,怎么把这两条SQL结合一下啊?
请大神指点

...全文
201 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅子 2016-07-29
  • 打赏
  • 举报
回复
现在做了一个零时表,完成这个操作,但是速度好慢,不知道大神们有没有其他办法可以解决这个问题

declare @guid varchar(50)
declare @i int
declare @a1 int
declare @a2 int
set @i=0
while (@i<=28038)
begin
select @guid=[guid]  from CSVTable where id=@i
select @a1=a1,@a2=a2 from aa(@guid,'',1,0,0)
update CSVTable set a1=@a1,a2=@a2 where id=@i
set @i=@i+1
end
唐诗三百首 2016-07-28
  • 打赏
  • 举报
回复
数据库-->属性-->检查兼容等级是否为100,如不是,修改为100. 用如下语句试试..

select  
    VC_UI_CODE               
    ,''                       
    ,VC_MT_NAME               
    ,''                       
    ,VC_MT_NAME               
    ,I_FM_DECIMAL           
    ,VC_MI_DIRECTION       
    ,''                       
    ,VC_MI_CARDNO               
    ,''                   
    ,VC_MT_METERSET           
    ,I_MI_SALECOUNT           
    ,b.a1                       
    ,b.a2                       
    ,D_UI_CREATEDATE   
    ,VC_O_NAME               
    ,''                       
    ,[GUID]
from View_2 a
outer apply dbo.aa(a.Guid,'',1,0,0) b 
梅子 2016-07-28
  • 打赏
  • 举报
回复
是跟数据库版本有关系么?我是SQL2008R2
梅子 2016-07-28
  • 打赏
  • 举报
回复
我用了Outer apply 一直报错: 消息 156,级别 15,状态 1,第 22 行 在关键字 'outer' 附近有语法错误。

select  
	VC_UI_CODE				
	,''						
	,VC_MT_NAME				
	,''						
	,VC_MT_NAME				
	,I_FM_DECIMAL			
	,VC_MI_DIRECTION		
	,''						
	,VC_MI_CARDNO				
	,''					
	,VC_MT_METERSET			
	,I_MI_SALECOUNT			
	,b.a1						
	,b.a2						
	,D_UI_CREATEDATE	
	,VC_O_NAME				
	,''						
	,[GUID]
from View_2 a
outer apply aa(a.Guid,'',1,0,0) b 
kingtiy 2016-07-28
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:

select  
    a.VC_UI_CODE               
    ,''                       
    ,a.VC_MT_NAME               
    ,''                       
    ,a.VC_MT_NAME               
    ,a.I_FM_DECIMAL           
    ,a.VC_MI_DIRECTION       
    ,''                       
    ,a.VC_MI_CARDNO               
    ,''                       
    ,a.VC_MT_METERSET           
    ,a.I_MI_SALECOUNT           
    ,b.字段名1            --表值函数返回值1  --> 自行填入字段名
    ,b.字段名2            --表值函数返回值2  --> 自行填入字段名
    ,a.D_UI_CREATEDATE       
    ,a.VC_O_NAME               
    ,''                       
    ,a.[GUID]
from View_2 a
outer apply aa(a.Guid,'',1,0,0) b
下解,厉害,
Ginnnnnnnn 2016-07-28
  • 打赏
  • 举报
回复
用cross apply 或者 outer apply 进行连接啊
唐诗三百首 2016-07-28
  • 打赏
  • 举报
回复

select  
    a.VC_UI_CODE               
    ,''                       
    ,a.VC_MT_NAME               
    ,''                       
    ,a.VC_MT_NAME               
    ,a.I_FM_DECIMAL           
    ,a.VC_MI_DIRECTION       
    ,''                       
    ,a.VC_MI_CARDNO               
    ,''                       
    ,a.VC_MT_METERSET           
    ,a.I_MI_SALECOUNT           
    ,b.字段名1            --表值函数返回值1  --> 自行填入字段名
    ,b.字段名2            --表值函数返回值2  --> 自行填入字段名
    ,a.D_UI_CREATEDATE       
    ,a.VC_O_NAME               
    ,''                       
    ,a.[GUID]
from View_2 a
outer apply aa(a.Guid,'',1,0,0) b
梅子 2016-07-28
  • 打赏
  • 举报
回复

select * from  aa(View_2.Guid,'',1,0,0) 
表值函数写漏了。。。
唐诗三百首 2016-07-28
  • 打赏
  • 举报
回复
改写代码或升级SQL Server..
梅子 2016-07-28
  • 打赏
  • 举报
回复
引用 12 楼 ap0405140 的回复:
[quote=引用 6 楼 sunnxxy 的回复:] 是跟数据库版本有关系么?我是SQL2008R2
引用 11 楼 sunnxxy 的回复:
。。为啥是2000的。。我晕
[/quote] 有其他解决办法么? 好急啊
唐诗三百首 2016-07-28
  • 打赏
  • 举报
回复
引用 6 楼 sunnxxy 的回复:
是跟数据库版本有关系么?我是SQL2008R2
引用 11 楼 sunnxxy 的回复:
。。为啥是2000的。。我晕
梅子 2016-07-28
  • 打赏
  • 举报
回复
。。为啥是2000的。。我晕
梅子 2016-07-28
  • 打赏
  • 举报
回复
引用 9 楼 ap0405140 的回复:
确认是是SQL2008R2吗? 执行select @@version查看一下.
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
唐诗三百首 2016-07-28
  • 打赏
  • 举报
回复
确认是是SQL2008R2吗? 执行select @@version查看一下.
梅子 2016-07-28
  • 打赏
  • 举报
回复
引用 7 楼 ap0405140 的回复:
数据库-->属性-->检查兼容等级是否为100,如不是,修改为100. 用如下语句试试..

select  
    VC_UI_CODE               
    ,''                       
    ,VC_MT_NAME               
    ,''                       
    ,VC_MT_NAME               
    ,I_FM_DECIMAL           
    ,VC_MI_DIRECTION       
    ,''                       
    ,VC_MI_CARDNO               
    ,''                   
    ,VC_MT_METERSET           
    ,I_MI_SALECOUNT           
    ,b.a1                       
    ,b.a2                       
    ,D_UI_CREATEDATE   
    ,VC_O_NAME               
    ,''                       
    ,[GUID]
from View_2 a
outer apply dbo.aa(a.Guid,'',1,0,0) b 
兼容级别的下拉框内自由两个选项,70和80,咋办啊

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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