db2 控制台执行创建函数语句_用C创建DB2自定义函数遇到的问题

我想在DB2中用C创建一个自定义的TRIM函数TrimChr.

C代码是在C/C++版上搜到的:

#include

#include

#include

#include

#include

#include

//Macro for iendity the blanks

#define isSpaces(ch) (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\b' || ch == '\f' || ch == '\n')

char *TrimChr(char *pszSource)

{

//pointer of the first char of string

char *pszHead = pszSource;

//pointer of the last non-blank char

char *pszLast = &pszSource[strlen(pszSource)-1];

//search the location of the last non-blank char

while (isSpaces(*pszLast))

--pszLast;

*(++pszLast) = '\0';

//search the first non-blank char for left shift the string

for ( ; (*pszHead != '\0') && (pszHead != pszLast); ++pszHead)

{

if (! isSpaces(*pszHead))

{

strcpy(pszSource, pszHead);

break;

}

}

return pszSource;

}

int main(int argc,char *argv[])

{

printf("\"");

printf(argv[1]);

printf("\"\n");

printf("\"");

printf(TrimChr(argv[1]));

printf("\"\n");

}

代码可以编译成功并在LINUX环境下运行的.

但是我想用它变成DB2的一个自定义函数时,老是出问题:

values TrimChr('   aaaa    ');

[IBM][CLI Driver][DB2/LINUX] SQL0444N  Routine "TRIMCHR" (specific name "SQL080529112348600") is implemented with code in library or path ".../sqllib/function/TrimChr", function "TrimChr" which cannot be accessed.  Reason code: "5".  SQLSTATE=42724

自定义函数是如此写的:

CREATE FUNCTION TrimChr (VARCHAR(400))

RETURNS VARCHAR(400)

EXTERNAL NAME '/home/db2inst1/sqllib/function/TrimChr!TrimChr'

LANGUAGE C

NULL CALL

PARAMETER STYLE DB2SQL

NO SQL

DETERMINISTIC

NO EXTERNAL ACTION

NOT FENCED;

GRANT EXECUTE ON FUNCTION TRIMCHR(VARCHAR(400)) TO PUBLIC;

请问是什么原因?是编译的问题?还是C函数的问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值