2

tables_found プロシージャを使用しないと実行されますが、このテーブルがデータベースに存在するかどうかを確認する必要があります。

CREATE OR replace PROCEDURE dropdb(tables_found out number) IS
    BEGIN                                  
        execute immediate 'SELECT COUNT(*) into tables_found FROM user_tables where table_name=''USERS''';
    if (tables_found = 1) then 
        execute immediate ' drop table users';
    END IF;
END dropdb;

エラーログ :

ora-00905 キーワードがありません

4

2 に答える 2

0

これに違いない

Execute immediate 'SELECT COUNT(*) FROM user_tables where table_name=''USERS'''  into tables_found;

またはさらに良い:

Execute immediate 'SELECT COUNT(*) FROM user_tables where table_name=:name'  into tables_found using 'USERS';
于 2015-04-07T15:12:03.370 に答える
0

試す:

execute immediate 'SELECT COUNT(*) into :x FROM user_tables
where table_name=''USERS''' 
USING OUT tables_found ;

上記がうまくいかない場合は、これを試してください:

   execute immediate 'DECLARE x NUMBER; BEGIN SELECT COUNT(*) into x
   FROM user_tables
    where table_name=''USERS'';
    :tables := x END' 
    USING OUT tables_found ;
于 2015-04-07T15:16:53.767 に答える