Cannot drop a table with dynamic SQL.

From: Anders S Johansson <asjohans_at_aut.abb.se>
Date: 13 May 92 19:57:41 GMT
Message-ID: <1992May13.195741.29110_at_aut.abb.se>


I have run into a problem which I am not able to solve, so if anyone has any hints please inform me.

The problem is that i cannot drop a modifyed committed table with a dynamic SQL statement.

When I run the following code this error message is presented: ORA-00056: DDL lock on object '18815' is already held in an incompatib

EXEC SQL INCLUDE SQLCA;
main()
{
  EXEC SQL BEGIN DECLARE SECTION;
    VARCHAR id[20];
    VARCHAR sqlstmt[255];
  EXEC SQL END DECLARE SECTION;      EXEC SQL WHENEVER SQLERROR GOTO fail;   EXEC SQL WHENEVER NOT FOUND GOTO fail;   

  id.len = strlen( strcpy( id.arr, "user/password"));   

  EXEC SQL CONNECT :id;   

  EXEC SQL DELETE FROM TESTTAB WHERE ID = 1;   EXEC SQL COMMIT WORK;      sprintf( sqlstmt.arr, "DROP TABLE TESTTAB");   sqlstmt.len = strlen(sqlstmt.arr);
  EXEC SQL PREPARE S1 FROM :sqlstmt; <<< --- It crashes here !!!   EXEC SQL EXECUTE S1;
  exit(0);
 fail:
  printf("\n\n>>>>> Error during execution:\n");   printf("%s\n",sqlca.sqlerrm.sqlerrmc);   EXEC SQL ROLLBACK RELEASE;
  exit(0);
}

The table TESTTAB contains the following values at start;

        ID VALUE
---------- ----------

         1          2
         2          4


/ Anders Johansson
  Lulea, Sweden Received on Wed May 13 1992 - 21:57:41 CEST

Original text of this message