sql >> Database teknologi >  >> RDS >> Oracle

INSERT Statement i PL/SQL mislykkes i Oracle-databasen

I PL/SQL kan du skrive INSERT erklæring direkte.

DECLARE
  tablevalue      varchar2(200);
BEGIN
  tablevalue := 'Hello World!';

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Din sætning mislykkes, fordi det ikke er måden DBMS_SQL.EXECUTE på arbejder. Tjek dokumentationen og eksemplet:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

I henhold til eksemplet i referencedokumentationen skal du gøre det sådan (først forbereder du sætningen, binder variablen og kører den derefter).

CREATE OR REPLACE PROCEDURE demo(tablevalue IN varchar2) AS
    cursor_name INTEGER;
    rows_processed INTEGER;
BEGIN
    cursor_name := dbms_sql.open_cursor;
    DBMS_SQL.PARSE(cursor_name, 'INSERT INTO tablename VALUES(:x)',
                   DBMS_SQL.NATIVE);
    DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', tablevalue);
    rows_processed := DBMS_SQL.EXECUTE(cursor_name);
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
    raise;
END;

Så bruger du det sådan her

 exec demo('something');

Håber det hjælper




  1. Eksporter mine Google-diagramdata (tabel) til excel eller csv

  2. Test for sikkerhedssårbarheder i webapplikationer:bedste praksis?

  3. Hvad er måder at få fælles venner på i et (1, 2) (2, 1) venskabsscenarie?

  4. Hvordan kan jeg finde alle tabellerne i MySQL med specifikke kolonnenavne i dem?