hur.cn - 华软网

 热门搜索

PB用OLE DB调用SQL SERVER带DATETIME 参数的自定义函数问题

  作者:未知    来源:网络    更新时间:2019/7/30
SQL SERVER 2000中创建自定义函数(前往值为TABLE):
CREATE          FUNCTION UDF_TEST (@ADT_NOW DATETIME)
RETURNS @T_RET TABLE (AAA DATETIME)
AS
BEGIN
INSERT INTO @T_RET VALUES(@ADT_NOW)
RETURN
END

在查询分析器中调用是正确的, 如:
declare @adt_now datetime
set @adt_now = getdate()
select *
from dbo.udf_test(@adt_now)

但在PB中就不行了, 如
Long ll_count
DateTime ldt_now = DateTime(today())

SELECT COUNT(*)
INTO :ll_count
FROM DBO.UDF_TEST(:ldt_now);

SQLERRTEXT毛病提醒:
SQLSTATE = 42000
Microsoft OLE DB Provider for SQL Server
第 1 行: '{' 邻近有语法毛病。

PB试过PB9.0.3 B8836, PB10.2.1 B9761, 列位遇到过吗? 如何措置惩罚的?
------华软网友回答------
没用过PB9和OLE DB
实在不行你就在SQL SERVER 2000中写个SP,在SP中运用函数dbo.udf_test
然后在PB中调用SP
------华软网友回复------
用SP很麻烦的, 由于这个函数中有一大堆代码, 我要先检测有没有相关数据, 再调用这个函数生成DW数据. 如用自定义函数我就能够用:
SELECT COUNT(*)
INTO :LL_COUNT
FROM DBO.UDF_TEST(:ADT_NOW)
IF LL_COUNT > 0 THEN
 ....
END IF
如果用存储进程, 就麻烦了. 

------华软网友回复------
在SP中用DATETIME参数, 好象没问题.

我现在的解决措施是, 自定义函数不变, 在PB中调用时不传送DATATIME类型参数, 传STRING参数,
如在DATAWINDOW中把ADT_NOW声明成STRING参数, 在SQL 语名中也用STRING参数, 就不会犯错了.

     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。