For example to create reports with a third-party report engine llike oracle reports, access, ... or every tool which can connect to oracle or odbc!
I created a small winccoa webservice (winccoa http server)... see script below
In oracle it is possible to call/use this webservices... see oracle package below
Some usage examples:
select pvss.dpGet('086_PM_CF_VSD2.') from dual -- get value of one dp
create table dps (el varchar2(2000)) -- create a table where we will store our datapoints we want to query
insert into dps (el) values ('086_PM_CF_VSD1.');
insert into dps (el) values ('086_PM_CF_VSD2.');
...
create or replace view dps_val as select el, pvss.dpGet(el) value from dps; -- create a view for easy access
select * from dps_val -- get all dp values
create or replace trigger dps_val_upd instead of update on dps_val -- create a trigger, so we can update the view!
begin
pPvss.dpSet(:old.el, :new.value);
end;
/
update dps_val set value=value+1 -- value will be increased in winccoa!
Of course by this way it will also be possible to create functions to read historical values of winccoa-value-archives (hdb, if you don't use the winccoa oracle rdb archive manager)...
Oracle source:
Code: Select all
CREATE OR REPLACE PACKAGE pvss AS
PROCEDURE SetServer(gHostname VARCHAR2, gPort INTEGER DEFAULT 80);
FUNCTION dpGet(dpName IN VARCHAR2) RETURN VARCHAR2;
FUNCTION dpSet(dpName IN VARCHAR2, dpValue IN VARCHAR2) RETURN INTEGER;
END;
/
CREATE OR REPLACE PACKAGE BODY pvss AS
gServer VARCHAR2(100) := localhost:81';
gErrNum NUMBER;
gErrTxt VARCHAR2(32767);
gEnv VARCHAR2(32767) := '';
/* A type to represent a SOAP RPC response */
TYPE response IS RECORD (
doc xmltype);
PROCEDURE setServer(gHostname VARCHAR2, gPort INTEGER DEFAULT 80)
IS
BEGIN
gServer:=gHostname||':'||gPort;
END;
function urlencode( p_str in varchar2 ) return varchar2
as
l_tmp varchar2(12000);
l_len number default length(p_str);
l_bad varchar2(100) default ' >%}\\~];?@&