sql >> Database >  >> RDS >> Oracle

INSERT-instructie in PL/SQL mislukt in Oracle-database

In PL/SQL zou je de INSERT . kunnen schrijven verklaring direct.

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

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Uw verklaring faalt omdat dat niet de manier is DBMS_SQL.EXECUTE werken. Bekijk de documentatie en het voorbeeld:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

Volgens het voorbeeld in de referentiedocumentatie zou je het als volgt moeten doen (eerst bereid je het statement voor, bind dan de variabele en voer het dan uit).

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;

Je gebruikt het dan als volgt

 exec demo('something');

Ik hoop dat het helpt




  1. MySql-somelementen van een kolom

  2. Afstand berekenen tussen 400 steden en MySQL daarvoor optimaliseren?

  3. Trek SQL-gegevens uit twee tabellen

  4. TSQL DateDiff om het aantal dagen met 2 decimalen te retourneren