db2如何查看代码User-Defined-Function调用C代码

时间:2013-06-28 17:53:32

标签: sql db2 db2-luw

我想看到如下定义的函数的代码。这个功能 -lives在名为MYSCHEMA的模式中 - 使用已安装的共享库。

我尝试使用以下内容,但它不起作用。

  select r.routinename as FunctionName, r.text as FunctionBody from 
  syscat.routines r where r.origin in ('U','R') and ROUTINESCHEMA='TRADE' 
  AND ROUTINETYPE ='F'

我该怎么做?

   create or replace function MyFunction(varchar(60))
          returns  table(
          ..fields..
           )
          external name 'mySharedLib.so!function'
          language c
          parameter style sql

2 个答案:

答案 0 :(得分:1)

没有“代码”,只有函数定义。您可以使用db2look或通过查询系统目录视图SYSCAT.ROUTINES和SYSCAT.ROUTINEPARMS来自行生成定义。

答案 1 :(得分:1)

DB2不会存储外部例程(C或Java)的代码。 DB2将在调用函数或SP时调用外部二进制文件。如果DB无法找到二进制文件,则会抛出错误

但是,例程定义和被调用二进制文件之间的映射在目录中,DB2将存储标头以及哪个二进制文件必须调用。

当您添加例程时,DB2甚至不检查该例程是否具有良好的格式或可调用的参数。这将在执行时完成。