1

PLSQL の単体テストに関する研究を行っています。関数とプロシージャを含むいくつかのテーブルとパッケージを使用して、テスト データベースをセットアップしました。現在、テスト フレームワーク 'utPLSQL' を試していますが、ref カーソルでテストするときにエラーが発生しました。すべてのテストを実行できますが、ref カーソルでのテストの結果は「ora-01031 権限が不十分です」と表示されます。このエラーの原因を見つけるにはどうすればよいですか? または、誰かが同じ問題に遭遇しましたか? utPLSQL のインストールは成功し、テスト フレームワークの他のすべての機能が動作します。

これは私がテストしたい手順です:

FUNCTION F_Get_Customers_RefCurs(P_LASTNAME IN VARCHAR2)
RETURN cust_refcur
IS
cust_result cust_refcur;
BEGIN
  OPEN cust_result FOR
    SELECT *
    FROM CUSTOMERS
    WHERE LASTNAME = P_LASTNAME
    ORDER BY email ASC;
  return(cust_result);
END F_Get_Customers_RefCurs;

次のように、関数を含むパッケージの仕様で cust_refcur を宣言しました。

TYPE cust_refcur IS REF CURSOR;

そして、これはテストです:

PROCEDURE ut_F_Get_Customers_RefCurs
IS
params utplsql_util.utplsql_params;
BEGIN
  utPLSQL_Util.reg_In_Param (1,
                           'Tester',
                           params);
  UTASSERT.eq_refc_query ('Get customers on last name is successful (refcursor)',
                        'PK_ORDERS.F_GET_CUSTOMERS_REFCURS',
                        params,
                        0,
                        'SELECT customerid, firstname, lastname, email, password
                         FROM CUSTOMERS
                         WHERE LASTNAME = ''Tester''
                         ORDER BY email ASC');
END;
4

3 に答える 3

0

このアサーション ( eq_refc_query) を実行するとき、utPLSQL は一時的にテーブルを作成する必要があります。これは、ロールを介してではなくEXECUTE IMMEDIATE、ユーザーに直接権限が付与されていることを要求する which を使用することによって行われます。CREATE TABLE

[完全な開示: 私は utPLSQL プロジェクトの管理者の 1 人です]

于 2013-10-02T00:30:53.003 に答える
0

'RETURN cust_refcur' が原因である可能性があります。utplsql で使用される型は varchar2(10) に格納されています。'return refcur' を試してみてください。-ザオズブ

于 2013-08-01T16:01:01.220 に答える