从“应用程序开发指南”定义外部(C)UDF示例 [英] Defining External (C) UDF example from Application Development Guide
问题描述
我已经在AIX上为DB2 8.1成功编译了以下UDF示例
4.3.3。当我尝试下面的db2 define function命令时,我得到以下错误的
:
DB21034E该命令被处理为SQL语句,因为它是
不是有效的命令行处理器命令。在SQL处理期间它返回
:
SQL0204N" IN1"是一个未定义的名称。 LINE NUMBER = 1。 SQLSTATE = 42704
我需要运行bind吗?
我的库是/ home / maddev / sqllib / function / udfsrv >
我看到当我转储该文件时编译.product:
[83] m 0x10000a90 1 1 0x02 0x0020 .product
[84] a4 0x00000045 0 0 2 0 0 0
来自应用程序开发指南:
-------------- -------------------------------------------------- ----------
以下是一个C / C ++ UDF的示例,它返回
的两个输入参数的产品:
SQL_API_RC SQL_API_FN产品(SQLUDF_DOUBLE * in1,
SQLUDF_DOUBLE * in2,
SQLUDF_DOUBLE * outProduct,
SQLUDF_NULLIND * in1NullInd,
SQLUDF_NULLIND * in2NullInd,
SQLUDF_NULLIND * productNullInd,
SQLUDF_TRAIL_ARGS)
{
* outProduct =(* in1)*(* in2);
return(0);
}
此UDF的相应CREATE FUNCTION语句如下:
CREATE FUNCTION product(double in1,double in2)
RETURNS double
LANGUAGE c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC >
空输入时返回NULL
无外部动作
外部名称?udfsrv!产品?
I have successfully compiled the following UDF sample for DB2 8.1 on AIX
4.3.3. When I try to ''db2 define function'' command below, I get the
following errors:
DB21034E The command was processed as an SQL statement because it was
not a valid Command Line Processor command. During SQL processing it
returned:
SQL0204N "IN1" is an undefined name. LINE NUMBER=1. SQLSTATE=42704
Do I need to run bind?
my library is /home/maddev/sqllib/function/udfsrv
I see that .product is compiled when I dump out that file:
[83] m 0x10000a90 1 1 0x02 0x0020 .product
[84] a4 0x00000045 0 0 2 0 0 0
From Application Development Guide:
--------------------------------------------------------------------------
The following is an example of a C/C++ UDF that returns the product of
its two input arguments:
SQL_API_RC SQL_API_FN product ( SQLUDF_DOUBLE *in1,
SQLUDF_DOUBLE *in2,
SQLUDF_DOUBLE *outProduct,
SQLUDF_NULLIND *in1NullInd,
SQLUDF_NULLIND *in2NullInd,
SQLUDF_NULLIND *productNullInd,
SQLUDF_TRAIL_ARGS )
{
*outProduct = (*in1) * (*in2);
return (0);
}
The corresponding CREATE FUNCTION statement for this UDF is as follows:
CREATE FUNCTION product( double in1, double in2 )
RETURNS double
LANGUAGE c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC
RETURNS NULL ON NULL INPUT
NO EXTERNAL ACTION
EXTERNAL NAME ?udfsrv!product?
推荐答案
John Rigler写道:
John Rigler wrote:
我已经在AIX上为DB2 8.1成功编译了以下UDF示例
4.3.3。当我尝试下面的db2 define function命令时,我得到以下错误:
DB21034E该命令作为SQL语句处理,因为它不是一个有效的命令行处理器命令。在SQL处理期间它返回:
SQL0204N" IN1"是一个未定义的名称。 LINE NUMBER = 1。 SQLSTATE = 42704
此UDF的相应CREATE FUNCTION语句如下:
CREATE FUNCTION product(double in1,double in2)
返回双语
语言c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC
在NULL输入上返回NULL
NO外部行动
外部名称?udfsrv!产品?
I have successfully compiled the following UDF sample for DB2 8.1 on AIX
4.3.3. When I try to ''db2 define function'' command below, I get the
following errors:
DB21034E The command was processed as an SQL statement because it
was not a valid Command Line Processor command. During SQL processing
it returned:
SQL0204N "IN1" is an undefined name. LINE NUMBER=1. SQLSTATE=42704
[...]
The corresponding CREATE FUNCTION statement for this UDF is as follows:
CREATE FUNCTION product( double in1, double in2 )
RETURNS double
LANGUAGE c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC
RETURNS NULL ON NULL INPUT
NO EXTERNAL ACTION
EXTERNAL NAME ?udfsrv!product?
CREATE FUNCTION应该只有参数的数据类型,
不是名称。如:
CREATE FUNCTION产品(双倍,双倍)
...
祝你好运,
----- =通过Newsfeeds.Com发布,未经审查的Usenet新闻= -----
http://www.newsfeeds.com - 世界排名第一的新闻组服务!
----- ==超过100,000个新闻组 - 19种不同的服务器= -----
The CREATE FUNCTION should only have the data types for the arguments,
not names. As in:
CREATE FUNCTION product(double, double)
...
Good luck,
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----
John Rigler写道:
John Rigler wrote:
我已经在AIX上为DB2 8.1成功编译了以下UDF示例
4.3.3。当我尝试下面的db2 define function命令时,我得到以下错误:
DB21034E该命令作为SQL语句处理,因为它不是一个有效的命令行处理器命令。在SQL处理期间它返回:
SQL0204N" IN1"是一个未定义的名称。 LINE NUMBER = 1。 SQLSTATE = 42704
此UDF的相应CREATE FUNCTION语句如下:
CREATE FUNCTION product(double in1,double in2)
返回双语
语言c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC
在NULL输入上返回NULL
NO外部行动
外部名称?udfsrv!产品?
I have successfully compiled the following UDF sample for DB2 8.1 on AIX
4.3.3. When I try to ''db2 define function'' command below, I get the
following errors:
DB21034E The command was processed as an SQL statement because it
was not a valid Command Line Processor command. During SQL processing
it returned:
SQL0204N "IN1" is an undefined name. LINE NUMBER=1. SQLSTATE=42704
[...]
The corresponding CREATE FUNCTION statement for this UDF is as follows:
CREATE FUNCTION product( double in1, double in2 )
RETURNS double
LANGUAGE c
PARAMETER STYLE sql
NO SQL
FENCED THREADSAFE
DETERMINISTIC
RETURNS NULL ON NULL INPUT
NO EXTERNAL ACTION
EXTERNAL NAME ?udfsrv!product?
CREATE FUNCTION应该只有参数的数据类型,
不是名称。如:
CREATE FUNCTION产品(双倍,双倍)
...
祝你好运,
----- =通过Newsfeeds.Com发布,未经审查的Usenet新闻= -----
http://www.newsfeeds.com - 世界排名第一的新闻组服务!
----- ==超过100,000个新闻组 - 19种不同的服务器= -----
The CREATE FUNCTION should only have the data types for the arguments,
not names. As in:
CREATE FUNCTION product(double, double)
...
Good luck,
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 100,000 Newsgroups - 19 Different Servers! =-----
实际上外部UDF可选择支持参数命名。
问题是OP混淆了顺序:
错误:CREATE FUNCTION产品(双in1,双in2)
正确:CREATE FUNCTION产品(in1 double,in2 double)
(除非当然OP有UDT in1和in2 ..但是他再次有了
a重复的参数名称DOUBLE ;-)
这些名字被加入了V7.1 GA随着SQL函数的出现。
干杯
Serge
-
Serge Rielau
DB2 SQL编译器开发
IBM多伦多实验室
Actually external UDF support the naming of parameters optionally.
Teh problem is that the OP confused the order:
Wrong: CREATE FUNCTION product( double in1, double in2 )
Correct: CREATE FUNCTION product( in1 double, in2 double )
(unless of course the OP has UDT in1 and in2.. but then again he''d have
a duplicate parameter name DOUBLE ;-)
The names were added in V7.1 GA with teh advent of SQL Functions.
Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
这篇关于从“应用程序开发指南”定义外部(C)UDF示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!