http://shrani.si/f/S/52/2l8ZPmn7/stack.jpg
我在M:1关系中遇到问题。我有名为“zaposleni”(M)的实体和名为“zapori”(1)的实体。当我想执行我的程序时出现问题。错误说我找不到我的父密钥,即使我已经用20个例子填充了我的zapori实体。当我使用“dbms_output.put_line”来查看什么过程返回时(在INSERT语句之前),过程只返回1和0,有时返回2或4.我知道该过程应该从1到20返回数字。
SQL看起来像这样: http://shrani.si/f/45/Nt/ig2Gi8t/stack2.jpg
现在我需要知道为什么会发生这种情况,如果有人可以解决这个问题或者至少帮助我提出一些建议,我会感激不尽。
SQL代码:
CREATE OR REPLACE PACKAGE BODY ui AS
PROCEDURE polni_zaposleni(stevilo_zaposleni NUMBER) IS
id_za NUMBER(10);
ime VARCHAR2(20);
priimek VARCHAR2(20);
del_doba VARCHAR2(20);
id_z NUMBER(10);
id_z_count number:= 0;
BEGIN
select count(1)
into id_z_count
from zaporniki;
FOR st IN 1..stevilo_zaposleni LOOP
id_z := dbms_random.value(1, id_z_count);
ime := 'Ime';
priimek := 'Priimek';
del_doba := 'Del_doba';
ime := ime||' '|| TO_CHAR(st);
priimek := priimek ||' '|| TO_CHAR(st);
del_doba := del_doba ||' '|| TO_CHAR(st);
dbms_output.put_line(id_z);
--INSERT INTO ZAPOSLENI (ID_ZA, IME, PRIIMEK, DEL_DOBA, ID_Z)
--VALUES (st, ime, priimek, del_doba, id_z);
--dbms_output.put_line(st);
END LOOP;
END;
结束ui;
答案 0 :(得分:0)
它似乎在SQL Fiddle上正常工作。
Oracle 11g R2架构设置:
CREATE TABLE zaporniki ( a ) AS
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <=20
/
CREATE TABLE ZAPOSLENI (
ID_ZA NUMBER,
IME VARCHAR2(20),
PRIIMEK VARCHAR2(20),
DEL_DOBA VARCHAR2(20),
ID_Z NUMBER
)
/
CREATE OR REPLACE PACKAGE ui
AS
PROCEDURE polni_zaposleni(stevilo_zaposleni NUMBER);
END ui;
/
CREATE OR REPLACE PACKAGE BODY ui AS
PROCEDURE polni_zaposleni(stevilo_zaposleni NUMBER)
IS
id_za NUMBER(10);
ime CONSTANT VARCHAR2(20) := 'Ime';
priimek CONSTANT VARCHAR2(20) := 'Priimek';
del_doba CONSTANT VARCHAR2(20) := 'Del_doba';
id_z NUMBER(10);
id_z_count NUMBER;
BEGIN
select count(1)
into id_z_count
from zaporniki;
FOR st IN 1..stevilo_zaposleni LOOP
id_z := dbms_random.value(1, id_z_count);
dbms_output.put_line(id_z);
INSERT INTO ZAPOSLENI (ID_ZA, IME, PRIIMEK, DEL_DOBA, ID_Z)
VALUES (
st,
ime||' '|| TO_CHAR(st),
priimek ||' '|| TO_CHAR(st),
del_doba ||' '|| TO_CHAR(st),
id_z
);
--dbms_output.put_line(st);
END LOOP;
END;
END ui;
/
查询1 :
SELECT * FROM zaporniki
<强> Results 强>:
| A |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
查询2 :
BEGIN
ui.polni_zaposleni(10);
END;
<强> Results 强>:
查询3 :
SELECT * FROM ZAPOSLENI
<强> Results 强>:
| ID_ZA | IME | PRIIMEK | DEL_DOBA | ID_Z |
|-------|--------|------------|-------------|------|
| 1 | Ime 1 | Priimek 1 | Del_doba 1 | 8 |
| 2 | Ime 2 | Priimek 2 | Del_doba 2 | 16 |
| 3 | Ime 3 | Priimek 3 | Del_doba 3 | 7 |
| 4 | Ime 4 | Priimek 4 | Del_doba 4 | 20 |
| 5 | Ime 5 | Priimek 5 | Del_doba 5 | 11 |
| 6 | Ime 6 | Priimek 6 | Del_doba 6 | 11 |
| 7 | Ime 7 | Priimek 7 | Del_doba 7 | 12 |
| 8 | Ime 8 | Priimek 8 | Del_doba 8 | 8 |
| 9 | Ime 9 | Priimek 9 | Del_doba 9 | 20 |
| 10 | Ime 10 | Priimek 10 | Del_doba 10 | 2 |