我对这个很陌生,所以请善待我;)
我已经在PL/SQL中创建了一个函数,我给函数一个UserNo,它给了我一个电子邮件地址。
我希望能够做的是,添加一个列'EMAIL'到'My_table'中,该列根据UserNo_column插入电子邮件。
就像这样:
Alter table My_Table add EMAIL value {USERNO2EMAIL-function(USERNO_column)} not null;
字符串
这是我的功能:
create or replace function userno2email
(userno in number)
return
varchar2 is email varchar2(64);
begin
select O_EMAIL into email from USERS where O_USERNO = USERNO;
return email;
end;
型
谢谢你...
2条答案
按热度按时间uqzxnwby1#
简单地说:看起来你必须使用一个触发器来实现这个目的。
这里有一个演示。
users
表和初始行:字符串
功能;我对它做了一点修改,这样使用起来更安全--与你的版本进行比较(你宁愿 * 继承 * 所涉及的数据库,而不是 * 硬编码 * 它们;如果什么都没有找到怎么办?如果你认为你需要它们,包括其他异常处理程序;使用前缀作为参数名):
型
这是目标表:
型
这就是你试图做的事情。现在,这是正确的,但结果是,可悲的是,错误的:
型
你可以在
alter table
语句中使用默认值-这没有问题,但是-它必须是有效的。例如:型
好,让我们以允许的方式添加
email
列:型
这是我在开始时提到的触发器-在插入
my_table
时,它将获取某人的电子邮件地址并将其放入适当的列中:型
好吧,让我们测试一下:
型
正如您所看到的,虽然我只插入了
ID
值,但触发器获取了电子邮件地址,而insert_date
上的default
子句负责处理这一点。relj7zay2#
如果你想这电子邮件id是最新的你可以使用一个视图而不是创建一个额外的列和如下触发器
字符串
您可以使用以下查询获取所需数据
型
的数据