【发布时间】:2015-05-30 00:03:09
【问题描述】:
我需要创建一个 PL/SQL 存储过程来向 tblCity2 表添加一条记录。 tblCity2 示例:
+-------------+--------+-------------+------------+
| NAME | CAPITAL| POPULATION | STATE_CODE |
+-------------+--------+-------------+------------+
| Monterrey | Y | 2015000 | MX19 |
| Mazatlan | N | 199830 | MX25 |
| Guadalajara | Y | 2325000 | MX14 |
+-------------+--------+-------------+------------+
该程序接收 4 个参数:城市名称、城市是否为首都、城市人口和州名。状态名称取自表 tblState2:
+------+-----------------------+---------+-----------+
| CODE | NAME | POP1990 | AREA_SQMI |
+------+-----------------------+---------+-----------+
| MX02 | Baja California Norte | 1660855 | 28002.325 |
| MX03 | Baja California Sur | 317764 | 27898.191 |
| MX18 | Nayarit | 824643 | 10547.762 |
+------+-----------------------+---------+-----------+
该过程调用一个存储函数,将状态名称传递给它,该函数返回状态代码,然后将其与其他参数一起用于在 tblCity2 中插入新记录。
我已经开始了一些代码,但我不确定下一步:
PROCEDURE question2
(i_StateName IN TBLSTATE2.NAME%TYPE,
i_CityName IN TBLCITY2.NAME%TYPE,
i_CityCapital IN TBLCITY2.CAPITAL%TYPE,
i_CityPopulation IN TBLCITY2.POPULATION%TYPE);
FUNCTION create_city
(i_StateName IN TBLSTATE2.NAME%TYPE)
RETURN [something??]
INSERT INTO TBLCITY2 VALUES;
END question2;
我还需要插入一个匿名程序块来调用该过程。它是否正确?我可以在与上面相同的代码中运行此代码还是必须单独运行?
BEGIN
question2(i_StateName, i_CityName, i_CityCapital, i_CityPopulation);
END;
【问题讨论】: