首页 > 解决方案 > 没有更多数据可以从套接字 IO 读取错误:软件导致连接中止:套接字写入错误 Oracle

问题描述

我尝试在 Oracle 中为我的应用程序生成示例数据,因此我创建了一个插入到 2 个单独的表中的过程,并在插入后运行另一个过程。

我有一个学生表,如下所示: 在此处输入图像描述

并有一个结果表: 在此处输入图像描述

我的 what_is_my_personality 程序只是根据学生数据和测试答案计算个性。它正在等待输入的 id。

在我的程序中,我尝试创建一个运行例如 5 次的 for 循环,并将 5 行插入到学生表和结果表中,然后执行我的程序并计算个性。要插入具有相同 id 的行并调用具有相同 id 的 what_is 过程,我正在使用在 student_dim 表中生成我的 id 的序列。

我的程序:

create or replace 
procedure generate_sample_data
as
  nextId NUMBER := 0;
begin
  FOR i IN 1 .. 5 LOOP
  SELECT seq1.nextval INTO nextId FROM dual;
  INSERT ALL 
  INTO student_dim
  (id,stu_id,dep_code,fac_code,password,stu_fname,stu_lname,gender,loc_code,age,gp_avg,personality)
  VALUES
  (nextId,dbms_random.string('U', 6),default,default,default,default,default,round(dbms_random.value(1,2)),default,round(dbms_random.value(10,80)),round(dbms_random.value(0,5)),NULL)
  INTO results
  (student_id,OPN1,OPN2,OPN3,OPN4,AGG1,AGG2,AGG3,AGG4,NEU1,NEU2,NEU3,NEU4,EXT1,EXT2,EXT3,EXT4,CSN1,CSN2,CSN3,CSN4)
  VALUES
  (nextId,round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)),round(dbms_random.value(0,5)))
  SELECT * FROM dual;
  what_is_my_personality(nextId);
  END LOOP;
  COMMIT;
end;

运行后我收到套接字写入错误: 在此处输入图像描述

一些日志信息: 在此处输入图像描述

My Oracle 版本:Oracle Database 11g Express Edition Release 11.2

标签: sqloraclesql-insertprocedure

解决方案


推荐阅读