Avatar billede kristoffer_o Nybegynder
18. august 2004 - 11:08 Der er 5 kommentarer og
1 løsning

Upload download blob synonym

Jeg har to baser, en web-base og en intranet-base begge ora 9. På web-basen uploader og downloader jeg fint dokumenter til min tabel documents via Application Server.

Men jeg vil gerne have at jeg uploader direkte til min intranet base med det samme da der også ligger dokumenter her. Derfor har jeg prøvet at oprette et synonym på min web-base, der peger på en tabel på intranet-basen.

Men når jeg prøver at uploade får jeg denne fejl: ORA-22816, som ikke umiddelbart giver nogen mening. jeg kunne forestille mig at det havde noget at gøre med blob datatypen og man ikke sådan lige kan flytte rundt på så stort et felt.

Det er lidt svært at beskrive problemet, så jeg uddyber gerne. Alle forslag til hvordan jeg løser problemet er meget velkomne.

Med venlig hilsen
Kristoffer
Avatar billede Slettet bruger
18. august 2004 - 19:33 #1
Jeg ved ikke om du kan bruge nedennævnte. Det er taget fra http://www-rohan.sdsu.edu/doc/oracle/errmsg803/A54625_01/newch2l.htm


ORA-22816: unsupported feature with RETURNING clause

Cause: RETURNING clause is currently not supported for object type columns, LONG columns, remote tables and INSERT with subquery.

Action: Use separate SELECT statement to get the values.
Avatar billede pnielsen Nybegynder
18. august 2004 - 20:29 #2
Fandt også denne her:

HTML DB - Version: 1.5.0.00
This problem can occur on any platform.

Errors
ORA-22816 unsupported feature with RETURNING clause

Goal
QUESTION ###
How to create an HTMLDB application which can insert, update and delete records from a remote database table?

A public database link is created on a remote database. Could not insert, update and delete records from an HTMLDB application (Report with Edit option).

Create a table in the database "A" with the syntax

create table test_tab(empno number(2), ename varchar2(10));

Create a database link in database "B" connecting to database "A".

create public database link test_link connect to scott identified by tiger using 'orcl';

Create a database view in database "B" with the syntax

create view test_view as select * from test_tab;

Then create an HTMLDB application having a report with edit option. You can delete the records but can not update or insert records. Thus created an "instead of trigger" to do that.

Create a "Instead Of Trigger" with the syntax

create or replace TRIGGER test_view_INSTEAD_OF_TRG
INSTEAD OF UPDATE or INSERT
ON test_view
REFERENCING OLD AS OLD NEW AS NEW
declare
begin
if updating then
if :new.empno != :old.empno then
raise_application_error(20001,'EMPNO could not be modified');
end if;
if :new.ename != :old.ename then
update test_tab@test_link set ename=:new.ename where empno = :old.empno;
end if;
end if;
if inserting then
insert into test_tab@test_link(empno,ename) values
(:new.empno,:new.ename);
end if;
if deleting then
delete from test_tab@test_link where empno = :old.empno;
end if;
end;

Now, the records can be updated but can not be inserted. It throws the error :


ORA-22816 "unsupported feature with RETURNING clause"
Fix
ANSWER ###

The insert does not work is a Bug. Bug is logged for this issue.

Bug # 3602642 -- ORA-22816 WHILE INSERTING DATA FROM A DATABASE VIEW BASED ON A REMOTE TABLE

Probably this will be fixed in patch 1 for HTML DB.

The workaround is :

1) Edit the Process Row process on the page containing the form.

2) In the Allowed Operations section, uncheck Insert, so that the only checkboxes checked are
Update and Delete.

3) In the Conditional Processing region, specify Condition Type of "Request is Contained
Within Expression 1" and in Expression 1 itself, enter a value of :

DELETE,SAVE

4) Create a new process on the same page, Point of On Submit - After Computations and
Validations, type of PL/SQL anonymous block.

5) The PL/SQL page process should be:

insert into test_view(empno, ename) values(:P8_EMPNO, :P8_ENAME);
commit;

Adjust the item names (P8_EMPNO, P8_ENAME) to correspond to your own page items

6) Step through the rest of the wizard, supplying a success and failure message if you like.

7) On Process Conditions, for When Button Pressed choose the button that corresponds to CREATE.
Avatar billede kristoffer_o Nybegynder
19. august 2004 - 10:00 #3
Tak for hjælpen, men problemet skyldes at der er restriktioner på blob datatypen, man kan ikke sådan uden videre flytte rundt på blob's mellem forskellige databaser. Hvad man kan og ikke kan beskrives her:

http://www.cise.ufl.edu/help/database/oracle-docs/appdev.920/a96591/adl04mng.htm#98328

Hvis der til gengæld er nogen der har forslag til hvordan man gemmer og åbner filer i databasen fra Forms 6i, så er jeg meget interesseret i at vide det (måske er det dårlig skik at stille et nyt spørgsmål i et spørgsmål????).

-> joern_h & pnielsen: Jeg giver gerne point for jeres indsats

Med venlig hilsen
Kristoffer
Avatar billede kristoffer_o Nybegynder
20. august 2004 - 13:46 #4
Jeg har nu implementeret en løsning af dokumenthåndtering. Løsningen indeholder: upload/download af dokumenter til dok. tabel på webserver og til tabel på ikke-webserver. Der er to interfaces: et web og et i Forms 6i. Det har været virkelig besværligt at implementere og har taget lang tid. Derfor vil jeg tilråde alle, der kan komme til at skulle lave noget lignende, til at bogmærke denne side og henvende sig til mig når de får brug for nogle tips.

Mvh.
Kristoffer
Avatar billede pnielsen Nybegynder
19. oktober 2004 - 22:09 #5
ok.. lukker du lige?
Avatar billede kristoffer_o Nybegynder
20. oktober 2004 - 09:47 #6
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester