0

以下のように定義された関数のコードを見たいと思います。この関数は - と呼ばれるスキーマに存在し、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
4

2 に答える 2

1

DB2 は、外部ルーチン (C または Java) のコードを保管しません。DB2 は、関数または SP が呼び出されると、外部バイナリを呼び出すだけです。DB がバイナリを見つけられない場合、エラーがスローされます。

ただし、ルーチン定義と呼び出されたバイナリーとの間のマッピングは、DB2 がヘッダーを保管するカタログ内にあり、どのバイナリーを呼び出す必要があります。

ルーチンを追加するとき、DB2 は、ルーチンが適切な形式であること、または呼び出し可能なパラメーターを持っていることをチェックしません。それは実行時に行われます。

于 2013-07-01T08:05:57.203 に答える
1

「コード」はなく、関数定義だけです。db2lookシステム カタログ ビュー SYSCAT.ROUTINES および SYSCAT.ROUTINEPARMS を照会することにより、自分で定義を使用または生成することができます。

于 2013-06-28T18:40:50.770 に答える