Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Instrukcja INSERT w PL/SQL nie działa w bazie danych Oracle

W PL/SQL możesz napisać INSERT oświadczenie bezpośrednio.

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

  INSERT   INTO tablename
         VALUES (tablevalue);
END;

Twoja instrukcja nie powiedzie się, ponieważ nie w ten sposób DBMS_SQL.EXECUTE Pracuje. Zapoznaj się z dokumentacją i przykładem:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

Zgodnie z przykładem podanym w dokumentacji referencyjnej należy to zrobić w ten sposób (najpierw przygotowujesz instrukcję, a następnie wiążesz zmienną, a następnie ją uruchamiasz).

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;

Używasz go wtedy w ten sposób

 exec demo('something');

Mam nadzieję, że to pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy %NOTFOUND może zwrócić wartość null po pobraniu?

  2. Zaktualizuj n losowych wierszy w SQL

  3. Przekazywanie parametrów do pliku Oracle SQL z pliku wsadowego

  4. Tworzenie wyzwalacza, który będzie uruchamiany tylko wtedy, gdy tworzona jest nowa tabela

  5. Jak zaktualizować kolumnę z konkatenacją dwóch innych kolumn w tej samej tabeli?