다음 코드를 사용하여 Oracle에서 가상 열을 만들었습니다.
가상 열 -보기에서보기 (Oracle)
CREATE OR REPLACE function email_address (ID_ varchar2)
return varchar2
deterministic
as
lname varchar2 (256);
snumber varchar2 (256);
email varchar2 (256);
BEGIN
select substr(p.name, instr(p.name, ' ', -1) + 1) into lname
from person p where p.id = id_;
SELECT regexp_replace(p.service_no, '[^0-9]*', '') into snumber
FROM person p where p.ID = id_;
email:= snumber||lname||'@met.af';
return email;
end email_address;
가상 열은 잘 작동하고 내가 가상 열에서 acheive 원하는 것을 채워 않습니다. 하지만 문제는 가상 컬럼의 테이블을 사용하여 뷰를 만들 때 발생합니다. 성능이 실제로 나빠집니다 (뷰의 인구). 여기, 나는 함수 (즉, 전자 메일의 빈 열)를 사용하지 않으면 뷰가 완벽하게 작동한다고 언급하고 싶습니다. 보기의 코드는 무엇 내가 가정하는 것은 내가 가상 컬럼을 할 때, 오라클은 강제가 너무 크거나 무거운 만들기, therby, 4000 데이터 유형의 길이를 유지하기 위해 나에게 묻는 것입니다
select distinct
person.SERVICE_NO as Service_No,
person.CNIC_NO as CNIC, person.NAME as NAME ,
card.CPLC_SERIAL_NO as Card_Number,
child_dc.NAME as Child_DC,
root_dc.NAME as Root_DC, person.OU as OU,
person.EMAIL as Email
from
person_card inner join person
on person_card.PERSON_ID = person.ID
inner join card
on person_card.CARD_ID = card.ID
left outer join child_dc
on person.CHILD_DC_ID = child_dc.ID
left outer join root_dc
on child_dc.ID = root_dc.ID;
아래로이다 채우다. 보기를 채우려면 어떻게해야합니까? 응용 프로그램에서 전자 메일을 입력하지 않으므로 가상 열이 있어야합니다. 도움말이 필요합니다.
와우! 너 한테 모자 벗었 어. 정말로 굉장한 –