写了一个c程序 已生成CTest.dll
在sql *plus窗口创建库ctestdll已经成功当创建函数时 有警告:创建的函数带有编译错误。代码如下:create or replace function get(stdname in varchar2)
return varchar2
as
language C
library ctestdll
name "getstring"
parameters(stdname varchar2,return varchar2)
/其中getstring是c源文件中的一个函数,输入参数是字符串,返回值也是字符串。热心的朋友来帮我看看哪里有问题。
在sql *plus窗口创建库ctestdll已经成功当创建函数时 有警告:创建的函数带有编译错误。代码如下:create or replace function get(stdname in varchar2)
return varchar2
as
language C
library ctestdll
name "getstring"
parameters(stdname varchar2,return varchar2)
/其中getstring是c源文件中的一个函数,输入参数是字符串,返回值也是字符串。热心的朋友来帮我看看哪里有问题。
解决方案 »
- 关于用right join or left join补全的问题?
- 求一触发器的条件语句
- 第一次提问就赶上黄金周末,sql语句查询无响应,求助
- 求一个SQL语句
- 我要在已有的包中创建一个Procedure
- 急,在线等,关于Oracle Management Server的问题
- 使用cursor?还是不使用Cursor?这是一个问题。高分望高手相助
- 请看看这里!
- 菜鸟问题!谢谢!
- 假设我的表中有10000条记录,如何每次只读出表的100条记录,分100次读完啊?第一次可以用 select * from tab1 where rownum<101;第二次怎
- 请教oracle如何设定某字段不等于某值
- 关于sql中的搜索引擎怎么用索引来查询数据?
你编译之后,再敲个show errors;看看有什么错误信息呗。
FUNCTION GET 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------
7/20 PLS-00103: 出现符号 "VARCHAR"在需要下列之一时:
) , array by indicator
LONG_ RAW_ double native length maxlen tdo duration charsetid
charsetform char short int sb1 sb2 sb4 ub1 ub2 ub4 float
OCINumber OCIString orlvary OCIRaw OCIDate OCIROWID
OCIDateTime OCIInterval OCIREFCURSOR orlany struct void
valist string OCIType OCIDuration OCIRef OCILobLocator
OCIColl SIZE_T_ UNSIGNED_上面就是错误信息 初学oracle 不懂其含义 热心人能不能帮忙解释一下
调用的时候parameters(stdname varchar2,return varchar2),
是不是到了dll里解析参数或者类型转换的时候有问题呢?
CTest.c源文件如下:#include <stdio.h>
#include <string.h>char *name = "lilei";
char *getstring(char *p)
{
if(p=="hello")
//printf("income is %s\n",p);
return name;
}int main()
{
char *lp="hello";
printf("The returned string is %s\n",getstring(lp));
printf("hello ExtProc!\n");
}通过gcc -shared CTest.c -o CTest.dll
生成dll文件
创建函数中的参数类型 parameters(stdname string,return string);就可以返回字符串了 不过产生一个新问题#include <stdio.h>
#include <string.h>
char *name = "lilei";
char *getstring(char *p)
{
char *q = p;
if(p=="hello")
return q;
else
return name;
}
int main()
{
char *lp="hello";
printf("The returned string is %s\n",getstring(lp));
printf("hello ExtProc!\n");
}源程序只要改变main函数中lp的串 根据不同值调用getstring可以分别返回“hello” “lilei”;
生成dll在sql plus中创建函数后 调用get('hello')和get('he')只返回“lilei”。这个你能帮忙看一下么?