0

以下の解決策を見つけましたが、これは PL/SQL ストアド プロシージャを使用して行う必要があります。

declare
  l_nullable varchar2(1);
begin
  select nullable into l_nullable
  from user_tab_columns
  where table_name = 'PV_REPORT_DETAILS'
  and   column_name = 'FEED_ID';

  if l_nullable = 'Y' then
    execute immediate 'alter table PV_REPORT_DETAILS modify (Feed_ID  not null)';
  end if;

  select nullable into l_nullable
  from user_tab_columns
  where table_name = 'PV_REPORT_DETAILS'
  and   column_name = 'CURRENT_RUN_ID';

  if l_nullable = 'Y' then
    execute immediate 'alter table PV_REPORT_DETAILS modify (Current_Run_ID not null)';
  end if;

  select nullable into l_nullable
  from user_tab_columns
  where table_name = 'PV_REPORT_DETAILS'
  and   column_name = 'PREVIOUS_RUN_ID';

  if l_nullable = 'Y' then
    execute immediate 'alter table PV_REPORT_DETAILS modify (Previous_Run_ID not null)';
  end if;
end;
4

2 に答える 2

1

Oracle の CREATE PROCEDURE 構文を見てください。それはあなたが探しているものでなければなりません。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6009.htm#i2072424

CREATE [OR REPLACE] PROCEDURE procedure_name
    [ (parameter [,parameter]) ]

IS
    [declaration_section]

BEGIN
    executable_section

[EXCEPTION
    exception_section]

END [procedure_name];
于 2013-10-20T19:49:57.683 に答える