编写一个不带参数 Ins_Job 的 PL/SQL 过程,在表 JOBS 中插入新记录
Posted
技术标签:
【中文标题】编写一个不带参数 Ins_Job 的 PL/SQL 过程,在表 JOBS 中插入新记录【英文标题】:Write a PL/SQL procedure with no parameters Ins_Job that inserts new record in table JOBS 【发布时间】:2020-11-30 06:31:22 【问题描述】: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 助理 - 最低工资: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 行
【问题讨论】:
什么不起作用? 您是否启用了输出?如果没有,请在调用该过程之前运行set serveroutput on
。再想一想,你有没有调用这个过程?您发布的代码只是创建它;你应该执行它,对吧? begin insert_job; end;
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小 ORA-06512:在“WKSP_ELIASHOME.INSERT_JOB1”,第 2 行 ORA-06512:在第 1 行 ORA-06512:在“SYS.DBMS_SQL”,第 1721 行 1. 开始 insert_job1;结尾;它向我显示了这个错误。
Dale k,它创建了程序但表中没有数据。而且当我调用它时,它向我显示了一个错误 .ORA-06502: PL/SQL: numeric or value error: string buffer too small ORA-06512: at "WKSP_ELIASHOME.INSERT_JOB1", line 2 ORA-06512: at line 1 ORA-06512:在“SYS.DBMS_SQL”,
【参考方案1】:
当我读到你的错误信息时: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';
或者,也许您必须检查表 OEHR_JOBS
中列 JOB_ID
的第一个长度
对不起,如果我的英语不好而且我不太熟悉 PLSQL。
【讨论】:
以上是关于编写一个不带参数 Ins_Job 的 PL/SQL 过程,在表 JOBS 中插入新记录的主要内容,如果未能解决你的问题,请参考以下文章