带参表值函数出错。
我有一个函数
f_getlie3(@riqi date)
这个里面用到了注册的远程服务器、
exec sp_addlinkedserver 'kqdb','','SQLOLEDB','sun-open'
调用select * from f_getlie3('2012-11-08') 结果正常。
但是
declare @riqi date
set @riqi='2012-11-08'
select * from f_getlie3(@riqi)
显示错误结果:
链接服务器"kqdb"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "未指定的错误"。
链接服务器"kqdb"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "比例无效。"。
消息 7322,级别 16,状态 2,第 3 行
向链接服务器 "kqdb" 的 OLE DB 访问接口 "SQLNCLI10" 提供参数信息时失败。
警告: 聚合或其他 SET 操作消除了 Null 值。
请问是什么原因?
[最优解释]
每次调用连接服务,关闭一次,再打开。
[其他解释]
加个try..catch,在catch里执行远程连接服务,注意用完就关闭连接,节省资源
[其他解释]
给个更直观的例子,请大家帮忙看下
create function f_test(@riqi date)
returns table
as
return
(
select * from [kqdb].[zykj].dbo.[carddata] where carddate>@riqi
)
select * from f_test('2012-11-08')
--结果正常
declare @ri date
set @ri='2012-11-08'
select * from f_test(@ri)
/**
链接服务器"kqdb"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "未指定的错误"。
链接服务器"kqdb"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "比例无效。"。
消息 7322,级别 16,状态 2,第 3 行
向链接服务器 "kqdb" 的 OLE DB 访问接口 "SQLNCLI10" 提供参数信息时失败。
**/