Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> DBMS_PIPE updates the database?
I'm trying to use the built-in DBMS_PIPE package within package functions that provide view column values. My package functions send messages via DBMS_PIPE to a C program daemon that returns data from UNIX shell commands.
Unfortunately, if I specify my package function using PRAGMA RESTRICT_REFERENCES with WNDS (write no database state), the package body is created with compilation errors, which say that the function violates its pragma. If I comment out the calls to DBMS_PIPE functions and procedures, the pragma violation disappears.
All the documentation I can find says that DBMS_PIPE communicates through shared memory in the SGA. Oracle documentation strongly suggests (but does not explicitly say) that a potential use for the DBMS_PIPE package is the creation of views that provide access to non-Oracle, non-SQL data generated by operating system commands.
Upon examining the DBMS_PIPE package specification in $ORACLE_HOME/rdbms/admin/dbmspipe.sql, there aren't any PRAGMA RESTRICT_REFERENCES defined. We have an unwrapped copy of $ORACLE_HOME/rdbms/admin/prvtpipe.sql (the DBMS package body source), and it doesn't contain any explicit database inserts, updates, or deletes.
What am I doing wrong? Did Oracle simply forget to define appropriate PRAGMAs for DBMS_PIPE, or does it really update the database? If so, that really cripples its potential.
Nels Olsen
Penta Technologies, Inc.
Received on Wed May 21 1997 - 00:00:00 CDT