表值函数问题求教

clicsullivan 2015-04-28 05:18:11
我创建了一个表值函数
CREATE FUNCTION [dbo].[fn_GetTicker]
(
@Symbol VARCHAR(10)
,@Date DATE
)
RETURNS @RtnValue TABLE ( Ticker VARCHAR(10) )
AS
BEGIN

IF EXISTS ( SELECT 1
FROM Reports.dbo.Reports
WHERE flagshipfund_symbol = @Symbol
AND date_report = @Date )
BEGIN
INSERT INTO @RtnValue
( Ticker
)
SELECT @Symbol
UNION
SELECT T2.Symbol
FROM Reports.dbo.Reports T1
INNER JOIN Reports.dbo.ReportsFund T2 ON T1.id_report = T2.id_report
WHERE T1.flagshipfund_symbol = @Symbol
AND date_report = @Date
END
ELSE
BEGIN
INSERT INTO @RtnValue
( Ticker
)
SELECT @Symbol
UNION
SELECT T2.Symbol
FROM Reports.dbo.Reports T1
INNER JOIN Reports.dbo.ReportsFund T2 ON T1.id_report = T2.id_report
WHERE T1.flagshipfund_symbol = @Symbol
END
RETURN
END
我直接运行能返回结果
例如: SELECT * FROM dbo.fnGetTicker('10882','2014-10-28')
可是当我这样调用的时候
SELECT D.*
FROM dbo.Document AS D
CROSS APPLY dbo.fn_GetTicker(D.Symbol,D.Date)
就报错了,给我这样的提示
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '.'.
我都不知道怎么回事,那位大侠知道呢。。。。
...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-04-29
  • 打赏
  • 举报
回复
原先设成2000了?
还在加载中灬 2015-04-28
  • 打赏
  • 举报
回复
居然语法要兼容05才解决?
clicsullivan 2015-04-28
  • 打赏
  • 举报
回复
自己解决了 ALTER DATABASE ARCData2 SET COMPATIBILITY_LEVEL = 90
clicsullivan 2015-04-28
  • 打赏
  • 举报
回复
SELECT D.Symbol FROM dbo.Document AS D CROSS APPLY dbo.fn_GetTicker(D.Symbol,D.Date) --报错 SELECT Ticker FROM dbo.fn_GetTicker('10882','2014-10-28') --返回有结果
clicsullivan 2015-04-28
  • 打赏
  • 举报
回复
我拷贝错了 函数是存在的
Tiger_Zhao 2015-04-28
  • 打赏
  • 举报
回复
SELECT * FROM dbo.fnGetTicker('10882','2014-10-28')

SELECT D.*
FROM dbo.Document AS D
CROSS APPLY dbo.fn_GetTicker(D.Symbol,D.Date)

到底有没有下划线?不是同一个函数吧。

22,294

社区成员

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

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