创建和使用不与数据库中存储的数据交互的pl / sql过程很容易制作和执行,但用途明显有限。
但我在处理这些存储数据时遇到了一些困难。
例如使用函数:
CREATE OR REPLACE PROCEDURE update_emp (emp_rec CONTACT%ROWTYPE) IS
fistname VARCHAR (40);
BEGIN
firstname := TRIM(fname);
UPDATE contact
SET FNAME = firstname
WHERE CONTACT_ID = emp_rec.id;
END update_emp;
/
设计用于CONTACT表,其中包含列FNAME和主键CONTACT_ID;上面的代码抛出了一个编译错误:
必须声明标识符'FNAME'
如何让函数了解此列?
答案 0 :(得分:2)
在这一行:
fistname := TRIM(fname);
您正在引用变量 fname
,并且未声明。
我的猜测是你实际上想要使用传递给过程的记录中的fname
列:
fistname := TRIM(emp_rec.fname);
答案 1 :(得分:0)
快速浏览一下代码,看起来错误就在于行
fistname := TRIM(fname);
程序不知道fname是什么。
答案 2 :(得分:0)
您声明fistname VARCHAR (40);
并更新您使用的语句SET FNAME = firstname
它应该是
SET FNAME = fistname
答案 3 :(得分:0)
确实不需要firstname
变量:
CREATE OR REPLACE PROCEDURE update_emp (emp_rec IN OUT CONTACT%ROWTYPE) IS
BEGIN
UPDATE contact
SET FNAME = TRIM(emp_rec.FNAME)
WHERE CONTACT_ID = emp_rec.ID;
END update_emp;
分享并享受。