0

デフォルトの varchar 値を持つ 2 つの列を持つテーブルがあります。また、4 つの値、2 つの varchar 値、および 2 つの日付を受け取るストアド プロシージャもあります。テーブルに行が挿入されていない場合でも、2 つの入力 varchar 値をテーブル内の 2 つの列のデフォルト値と比較したいと考えています。これを行う方法はありますか?

これは機能しませんが、これらの線に沿ったものです。

create or replace 
PROCEDURE TEST_PROC
(
  TEST_NAME IN VARCHAR2  
, TEST_VERSION IN VARCHAR2  
, TEST_START IN DATE  
, TEST_END IN DATE 
) AS
BEGIN

if TEST_NAME = TABLE.COL_1.DEFAULT_VALUE 
AND TEST_VERSION = TABLE.COL_2.DEFAULT_VALUE ...
4

1 に答える 1

1

データ ディクショナリを使用して、列のデフォルト値を取得します。次に、プロシージャで変数を宣言し、入力を比較します。たとえば、次のようにします。

SELECT TABLE_NAME||'.'||COLUMN_NAME, DATA_DEFAULT
INTO tableVariable, defaultVariable
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME=:myTable
AND COLUMN_NAME=:myColumn
AND DATA_DEFAULT IS NOT NULL

カーソルとして使用して、ループすることもできます。

于 2013-07-24T21:29:25.080 に答える