日期:2014-05-17  浏览次数:20423 次

带参表值函数出错。
我有一个函数
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" 提供参数信息时失败。
**/



------其他解决方案--------------------
不能沉,有大侠出现吗?
------其他解决方案--------------------
引用:
每次调用连接服务,关闭一次,再打开。


求码,找了半天居然没找到关闭链接服务器语句。