| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Re:Question: Why cann't I drop table?
Re-write the package as follows (namely get rid of the semicolon when creating
the ISQL variable):
CREATE OR REPLACE PACKAGE BODY hpxpkg_catalog_management
IS
obj_type_in IN VARCHAR2,
schma_name_in IN VARCHAR2,
obj_name_in IN VARCHAR2)
IS
lSQL VARCHAR2(2000);
lCURSOR_HANDLE INTEGER;
lERROR_CODE NUMBER := SQLCODE;
lERROR_MSG VARCHAR2(300) := SQLERRM;
BEGIN
DBMS_OUTPUT.PUT_LINE (lSQL);
lCURSOR_HANDLE := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE (lCURSOR_HANDLE, lSQL,dbms_SQL.V7);
DBMS_OUTPUT.PUT_LINE ('after parse');
DBMS_SQL.CLOSE_CURSOR (lCURSOR_HANDLE);
EXCEPTION
DBMS_OUTPUT.PUT_LINE ('exception raised');
DBMS_OUTPUT.PUT_LINE ('ERROR CODE: ' || lERROR_CODE);
DBMS_OUTPUT.PUT_LINE ('ERROR MESSAGE: ' || lERROR_MSG);
DBMS_SQL.CLOSE_CURSOR (lCURSOR_HANDLE);
END drop_object;
____________________Reply Separator____________________
Subject: Question: Why cann't I drop table?
Author: "Guang Mei" <zlmei_at_hotmail.com>
Hi:
I am totally confused why my "drop table .. " statement using dynamic sql does not work. The oracle user_name I login has dba privilege. And as a test, I am trying to drop table HPXAREA in schema CATALOG_MANAGEMENT;
Here is how I tested:
SQL> select user from dual;
USER
OWNER OBJECT_NAME OBJECT_TYPE
STATUS
------------------------------ ------------------------------
------------------ -------
PUBLIC HPXPKG_CATALOG_MANAGEMENT SYNONYM
VALID
WEBSTORE_OWNER HPXPKG_CATALOG_MANAGEMENT PACKAGE
VALID
WEBSTORE_OWNER HPXPKG_CATALOG_MANAGEMENT PACKAGE BODY
VALID
SQL> select * from CATALOG_MANAGEMENT.HPXAREA 2 ;
AREAID ZONEID A LOCALE
DELIVERYD
02138 T
SQL> drop table CATALOG_MANAGEMENT.HPXAREA;
Table dropped.
SQL> select * from CATALOG_MANAGEMENT.HPXAREA; select * from CATALOG_MANAGEMENT.HPXAREA
*
SQL> copy from demodb/demodb_at_aredev00 -
>to CATALOG_MANAGEMENT/CATALOG_MANAGEMENT_at_webstore-kungfu - >create HPXAREA - >using select * from HPXAREA;
Array fetch/bind size is 1000. (arraysize is 1000)
Will commit after every array bind. (copycommit is 1)
Maximum long size is 80. (long is 80)
Table HPXAREA created.
1 rows selected from demodb_at_aredev00.
1 rows inserted into HPXAREA.
1 rows committed into HPXAREA at CATALOG_MANAGEMENT_at_webstore-kungfu.
SQL> select * from CATALOG_MANAGEMENT.HPXAREA;
AREAID ZONEID A LOCALE
DELIVERYD
02138 T
SQL> begin
2 hpxpkg_catalog_management.drop_object('table',
3 'CATALOG_MANAGEMENT',
4 'hpxarea');
5 end;
PL/SQL procedure successfully completed.
SQL> select * from CATALOG_MANAGEMENT.HPXAREA;
AREAID ZONEID A LOCALE
DELIVERYD
02138 T
SQL> So, why couldn't I drop the table?
Thanks.
Guang
PS: Here is the code for package "hpxpkg_catalog_management":
/*********************************************************************** * Package Name: hpxpkg_catalog_management * Description: To manage the process of refreshing data from "catalog * management" server to "production" server * * Restriction: None. * * Revisions: None. * * Authors: Guang Mei * * Date Written: 6/10/2000 * * Special Notes: None.
***********************************************************************/CREATE OR REPLACE PACKAGE hpxpkg_catalog_management IS
------------------------------------------------------------------
PROCEDURE drop_object(
obj_type_in IN VARCHAR2,
schma_name_in IN VARCHAR2,
obj_name_in IN VARCHAR2);
PROCEDURE copy_table(
from_user_in IN VARCHAR2,
from_password_in IN VARCHAR2,
from_serv_in IN VARCHAR2,
from_schma_name_in IN VARCHAR2,
to_user_in IN VARCHAR2,
to_password_in IN VARCHAR2,
to_serv_in IN VARCHAR2,
to_schma_name_in IN VARCHAR2,
table_name_in IN VARCHAR2);
END hpxpkg_catalog_management ;
/
IS
obj_type_in IN VARCHAR2,
schma_name_in IN VARCHAR2,
obj_name_in IN VARCHAR2)
IS
lSQL VARCHAR2(2000);
lCURSOR_HANDLE INTEGER;
lERROR_CODE NUMBER := SQLCODE;
lERROR_MSG VARCHAR2(300) := SQLERRM;
BEGIN
DBMS_OUTPUT.PUT_LINE (lSQL);
lCURSOR_HANDLE := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE (lCURSOR_HANDLE, lSQL,dbms_SQL.V7);
DBMS_OUTPUT.PUT_LINE ('after parse');
DBMS_SQL.CLOSE_CURSOR (lCURSOR_HANDLE);
EXCEPTION
DBMS_OUTPUT.PUT_LINE ('exception raised');
DBMS_OUTPUT.PUT_LINE ('ERROR CODE: ' || lERROR_CODE);
DBMS_OUTPUT.PUT_LINE ('ERROR MESSAGE: ' || lERROR_MSG);
DBMS_SQL.CLOSE_CURSOR (lCURSOR_HANDLE);
END drop_object;
------------------------------------------------------------------
-- copy table and data from one database to another database:
PROCEDURE copy_table(
from_user_in IN VARCHAR2,
from_password_in IN VARCHAR2,
from_serv_in IN VARCHAR2,
from_schma_name_in IN VARCHAR2,
to_user_in IN VARCHAR2,
to_password_in IN VARCHAR2,
to_serv_in IN VARCHAR2,
to_schma_name_in IN VARCHAR2,
table_name_in IN VARCHAR2)
IS
cursor_id INTEGER;
lsql VARCHAR2(2000);
BEGIN
|| '@' || from_serv_in
|| ' TO ' || to_user_in || '/' || to_password_in
|| '@' || to_serv_in
|| ' CREATE ' || to_schma_name_in || '.' || table_name_in
|| ' USING SELECT * FROM '|| from_schma_name_in
|| '.' || table_name_in ;
dbms_output.put_line (lsql);
-- Author: Guang Mei INET: zlmei_at_hotmail.com Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing ListsReceived on Thu Jun 08 2000 - 16:10:51 CDT
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
![]() |
![]() |