我想在運行時向表中插入新記錄。我正在使用apex.oracle.com平臺。
我創建了下表:-
CREATE TABLE STUDENTS(ID VARCHAR2(10),NAME VARCHAR2(50),COURSE VARCHAR2(10),MOBILE NUMBER(10),EMAIL VARCHAR2(50));
并創建此程序以將記錄插入表中:-
CREATE OR REPLACE PROCEDURE "INSERTRECORD" (ID IN VARCHAR2,NAME IN VARCHAR2,COURSE IN VARCHAR2,MOBILE IN NUMBER,EMAIL IN VARCHAR2)
IS
BEGIN
INSERT INTO STUDENTS VALUES(ID,NAME,COURSE,MOBILE,EMAIL);
END;
DECLARE
RECORD_SIZE NUMBER := 2;
ID VARCHAR2(10);
NAME VARCHAR2(50);
COURSE VARCHAR2(10);
MOBILE NUMBER(10);
EMAIL VARCHAR2(50);
I NUMBER;
BEGIN
FOR I IN 1..RECORD_SIZE LOOP
ID:=:ID;
NAME:=:NAME;
COURSE:=:COURSE;
MOBILE:=:MOBILE;
EMAIL:=:EMAIL;
INSERTRECORD(ID,NAME,COURSE,MOBILE,EMAIL);
END LOOP;
END;
我無法在用戶提供的運行時插入記錄....我收到此錯誤。有人可以解決這個問題嗎?或者可以幫助我在運行時將記錄插入表中。
錯誤:-
ORA-01722: invalid number
ORA-06512: at "WKSP_CUPLSQL.INSERTRECORD", line 4
ORA-06512: at line 16
ORA-06512: at "SYS.DBMS_SQL", line 1721
2. RECORD_SIZE NUMBER := 2;
3. ID VARCHAR2(10);
4. NAME VARCHAR2(50);
5. COURSE VARCHAR2(10);
6. MOBILE NUMBER(10);
uj5u.com熱心網友回復:
我不確定你為什么需要一個程式。在 Oracle 中,要將多行插入到包含 col1、col2 和 col3 列的表 t 中,您可以使用以下語法:
INSERT ALL
INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3')
INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3')
INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3')
.
.
.
SELECT 1 FROM DUAL;
Or
INSERT INTO t (col1, col2, col3)
SELECT 'val1_1', 'val1_2', 'val1_3' from dual UNION ALL
SELECT 'val1_4', 'val1_5', 'val1_6'
FROM DUAL
這里要記住的是使用 from dual 陳述句。
uj5u.com熱心網友回復:
試試這個。這個對我有用。
DECLARE
record_count NUMBER := 10;
BEGIN
FOR i IN 1..record_count
LOOP
insertrecord (:id, :student_name, :course, :mobile, :email);
END LOOP;
END;
/
NAME 是一個 Oracle 關鍵字,因此它不是一個好的列名或變數名。我把它改成了student_name。
uj5u.com熱心網友回復:
PL/SQL 不是互動式語言。正是 SQL*Plus 提示您輸入一個值,它需要先獲取所需的所有替換值,然后才能將 PL/SQL 塊發送到要執行的資料庫。PL/SQL 無法提示用戶輸入,因此無法在 PL/SQL 回圈中提示輸入。
如果您試圖讓用戶輸入許多值,而編譯時不知道他們需要輸入的值的數量,通常最好撰寫一個小型應用程式(shell 腳本、Perl 腳本、微型 C 應用程式等)以支持用戶互動并將其提供給用戶的語言撰寫。讓應用程式獲取用戶輸入,然后將其傳遞給 PL/SQL 行程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385710.html
標籤:甲骨文 plsql oracle-apex 批量插入
上一篇:展平表格以獲得唯一的電子郵件地址
