j'utilise forms 6i
comment je peux connecter a un utilisateur dans le plsql pour utuliser es donnes dans un autre table
si possible un exemple
j'utilise forms 6i
comment je peux connecter a un utilisateur dans le plsql pour utuliser es donnes dans un autre table
si possible un exemple
Le package Forms EXEC_SQL permet de se connecter à un autre utilisateur. Je ne sais, par contre s'il est disponible avec la version 6i et je n'ai pas d'exemple tout fait non plus.
Voici un exemple trouvé sur Metalink.
Cet exemple connecte sur 2 bases distinctes, mais la connexion dans la même base sur 2 users relève du même raisonnement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 declare empno NUMBER; ename VARCHAR2(10); deptno NUMBER; source_connid EXEC_SQL.ConnType; destination_connid EXEC_SQL.ConnType; source_cursor EXEC_SQL.CursType; destination_cursor EXEC_SQL.CursType; dummy PLS_INTEGER; begin -- open the connections source_connid := EXEC_SQL.OPEN_CONNECTION(:source_db); destination_connid := EXEC_SQL.OPEN_CONNECTION(:dest_db); -- prepare the cursor to select from source database source_cursor := EXEC_SQL.OPEN_CURSOR(source_connid); EXEC_SQL.PARSE(source_connid, source_cursor,'SELECT empno, ename,deptno FROM ' ||:source_tab); EXEC_SQL.DEFINE_COLUMN(source_connid, source_cursor,1,empno); EXEC_SQL.DEFINE_COLUMN(source_connid, source_cursor,2,ename,10); EXEC_SQL.DEFINE_COLUMN(source_connid, source_cursor,3,deptno); dummy := EXEC_SQL.EXECUTE(source_connid,source_cursor); -- prepare the cursor to insert into destination database destination_cursor := EXEC_SQL.OPEN_CURSOR(destination_connid); EXEC_SQL.PARSE(destination_connid,destination_cursor,'INSERT INTO ' ||:dest_tab || '(empno,ename,deptno) VALUES (:empno,:ename,:deptno)'); LOOP -- fetch rows from source database IF EXEC_SQL.FETCH_ROWS(source_connid,source_cursor) > 0 THEN -- get column values for this row EXEC_SQL.COLUMN_VALUE(source_connid,source_cursor,1, empno); EXEC_SQL.COLUMN_VALUE(source_connid,source_cursor,2, ename); EXEC_SQL.COLUMN_VALUE(source_connid,source_cursor,3, deptno); -- bind the column values into the cursor that inserts into destination database EXEC_SQL.BIND_VARIABLE(destination_connid,destination_cursor, ':empno', empno); EXEC_SQL.BIND_VARIABLE(destination_connid,destination_cursor, ':ename', ename); EXEC_SQL.BIND_VARIABLE(destination_connid,destination_cursor, ':deptno', deptno); dummy := EXEC_SQL.EXECUTE(destination_connid,destination_cursor); ELSE EXIT; END IF; END LOOP; -- commit transaction in destination database EXEC_SQL.PARSE(destination_connid,destination_cursor,'commit'); dummy := EXEC_SQL.EXECUTE(destination_connid,destination_cursor); -- close cursors and connections EXEC_SQL.CLOSE_CURSOR(destination_connid,destination_cursor); EXEC_SQL.CLOSE_CURSOR(source_connid, source_cursor); EXEC_SQL.CLOSE_CONNECTION(destination_connid); EXEC_SQL.CLOSE_CONNECTION(source_connid); MESSAGE('Done!'); EXCEPTION -- handle errors raised by the exec_sql package WHEN EXEC_SQL.PACKAGE_ERROR THEN IF EXEC_SQL.LAST_ERROR_CODE(source_connid) != 0 THEN TEXT_IO.PUT_LINE('ERROR (source: ' || TO_CHAR(EXEC_SQL.LAST_ERROR_CODE(source_connid))|| '): ' ||EXEC_SQL.LAST_ERROR_MESG(source_connid)); END IF; IF EXEC_SQL.LAST_ERROR_CODE(destination_connid) != 0 THEN TEXT_IO.PUT_LINE('ERROR (destination: ' || TO_CHAR(EXEC_SQL.LAST_ERROR_CODE(destination_connid))|| '): ' ||EXEC_SQL.LAST_ERROR_MESG(destination_connid)); END IF; IF EXEC_SQL.IS_CONNECTED(destination_connid) THEN IF EXEC_SQL.IS_OPEN(destination_connid,destination_cursor) THEN EXEC_SQL.CLOSE_CURSOR(destination_connid,destination_cursor); END IF; EXEC_SQL.CLOSE_CONNECTION(destination_connid); END IF; IF EXEC_SQL.IS_CONNECTED(source_connid) THEN IF EXEC_SQL.IS_OPEN(source_connid,source_cursor) THEN EXEC_SQL.CLOSE_CURSOR(source_connid,source_cursor); END IF; EXEC_SQL.CLOSE_CONNECTION(source_connid); END IF; END;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager