CREATE OR REPLACE PROCEDURE Insert_Job AS
v_job_id VARCHAR2(10) := 'HR_Assistant';
v_job_title VARCHAR2(35) := 'HRessourcesAssistant';
v_Min_Salary NUMBER(22):= 400;
v_max_salary NUMBER (22):= 5000;
BEGIN
INSERT INTO OEHR_JOBS (JOB_ID, JOB_TITLE,MIN_SALARY,MAX_SALARY)
VALUES (v_job_id, v_job_title, v_Min_Salary, v_max_salary);
dbms_output.put_line('Insertion OK');
End;
编写不带参数Insert_Job的PL / SQL过程,该参数在表JOBS中插入新记录:-职位ID:助手-职位名称:HRessources Assistant-最低工资:400-最高工资:5000该过程应向用户打印一条消息告知他插入状态(成功/错误)。在两种情况下都调用该过程并截取输出的屏幕快照。
这是我尝试的方法,对你没有任何帮助吗?它创建了过程,但表中没有数据,当我调用它时,它也显示了一个错误。我正在使用APEX ORACLE,以下是错误消息
ORA-06550:第2行,第1列:PLS-00905:对象WKSP_ELIASHOME.INSERT_JOB无效ORA-06512:在“ SYS.WWV_DBMS_SQL_APEX_200200”,第626行ORA-06550:第2行,第1列:PL / SQL:语句被忽略ORA -06512:在“ SYS.DBMS_SYS_SQL”行1658中ORA-06512:在“ SYS.WWV_DBMS_SQL_APEX_200200”行612 ORA-06512:在“ APEX_200200.WWV_FLOW_DYNAMIC_EXEC”中,行1749
当我阅读你的错误消息时:numeric or value error: character string buffer too small
这意味着你的长度太小。在你的代码中:
v_job_id VARCHAR2(10) := 'HR_Assistant';
这是因为长度比'HR_Assistant'
10长
尝试将长度更改v_job_id
为:
v_job_id VARCHAR2(12) := 'HR_Assistant';
或者,你可以将某些字符删除为:
v_job_id VARCHAR2(10) := 'Assistant';
或者,也许你必须从JOB_ID
表中的列检查第一个长度OEHR_JOBS
抱歉,如果我的英语不好,并且我不太熟悉PLSQL。