Function call that returns BOOLEAN
HelloCould you suggest on below:
21 d
I call the existing function that returns a Boolean value (TRUE/FALSE), in my new code.
part of the new code should run only when the output more is true.
is logic below... right?
XX_TND_OUT is the existing function
=======================
IF (in_prod_id) XX_TND_OUT = TRUE
THEN
.. . Run my code
END IF;
Thank you.
Be Boolean you can directly compare the function
IF XX_TND_OUT (in_prod_id)
THEN
......execute my code
END IF;
That is to say:
DECLARE
FUNCTION iseven (num INTEGER)
RETURN BOOLEAN
IS
BEGIN
IF MOD (num, 2) = 0
THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END iseven;
BEGIN
FOR i IN 1 .. 10
LOOP
IF iseven (i)
THEN
DBMS_OUTPUT.put_line (i || ' is even');
ELSE
DBMS_OUTPUT.put_line (i || ' is odd');
END IF;
END LOOP;
END;
/
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
Kind regards.
Al
Tags: Database
Similar Questions
-
Hello
almost got a sorting site but I need help with one last game - a button which, when clicked on loads a swf in a charger via another function (basically, you press the button that triggers an animation which, once completed, then shows a loader to load a swf file)
I prefer to not have separate function for each individual button calls if I can help it - is there anyway I could get the function call that loads the swf file to identify which button has been activated to set it off?
It's my function call for when the button is clicked:
private void sample2Clicked(event:MouseEvent):void {}
printLoader.unload ();
addChild (printIntro);
printIntro.gotoAndPlay (1);
printIntro.addEventListener (Event.ENTER_FRAME, sampleIntroComplete);
}
This is the function call that triggers the charger:
private void sampleIntroComplete(event:Event):void {}
If (printIntro.currentFrame == 50) {}
removeChild (printIntro);
addChild (pldr);
printLoader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, printLoaderloading);
printLoader.load (new URLRequest ("sample_2.swf"));
printLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, printLoaderComplete);
printIntro.removeEventListener (Event.ENTER_FRAME, sampleIntroComplete);
}
}
Ideally, I would like to set this function on each button, but don't know of a way to get the function call to recognize which button has been activated to get? At the moment it's only going to load "sample_2.swf".
I need to be able to say "If 1 load swf button 1", "builds on the 2 button, load swf 2" etc etc...»
can someone help me?And another way to actually assign a string value to the "name" of the MovieClip property:
Btn1.x = 100;
Btn1.y = 100;
Btn1. Name = "btn1";Then the code previous, I had should operate, but by adding the name property:
btnIndex = event.currentTarget.name.toString ().slice(-1);
These two solutions should work for you.
TS
-
Go to a function that returns a Boolean
Short version of the question: Boolean values can be returned by a pl/sql function?
I've implemented a short function which returns a Boolean value; When I compile it I get an error:
Error report:
ORA-06550: line 5, column 32:
PLS-00382: expression is of the wrong type
ORA-06550: line 6, column 4:
PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
ORA-06550: line 6, column 4:
PL/SQL: Statement ignored
06550 00000 - "line %s, column % s:\n%s".
* Cause: Usually a PL/SQL compilation error.
* Action:
The closest, I appealed
RETURN sys.diutil.bool_to_int (< foo >);
and then a caller script can call
sys.diutil .int_to_bool (< bar >);
at least this way there is no verification of the Boolean value of 'manual '. Is it really the only way to return / call a Boolean?
Thank you
Chris
EDIT
I was aware of the fact I had not provided examples of code - and was just one question fairly open. I hope that this example will show what does not work!
I have a function that returns a Boolean value:
create or replace
FUNCTION myFunc (s_in IN VARCHAR2) RETURN a Boolean value
IS
s_out BOOLEAN: = TRUE;
BEGIN
RETURN s_out;
END FUNCTION3;
I try and call the function in the following script:
DECLARE
s_in varchar2 (20): = "Hello";
s_out boolean;
BEGIN
SELECT myfunction (s_in) INTO s_out FROM DUAL;
END;
That's when I get the error. But sorry, I was looking for too many error messages! I have worked that the one I posted above is because put_line can accept only strings and numbers not Boolean, the mistake that this function returns is:
ORA-06550: line 5, column 32:
PLS-00382: expression is of the wrong type
ORA-06550: line 5, column 11:
PLS-00382: expression is of the wrong type
06550 00000 - "line %s, column % s:\n%s".
* Cause: Usually a PL/SQL compilation error.
* Action:
However, I suppose that the comment of Frank Kulash is perhaps the reason why I see this?
Post edited by: 2922851
Hi, Chris,.
2922851 wrote:
Short version of the question: Boolean values can be returned by a pl/sql function?
Sure. If you are having problems, post your code (both the function and some PL/SQL that calls it).
The BOOLEAN data type exists only in PL/SQL, not in SQL, so if the function returns a BOOLEAN value, then you can't call it in a SQL statement, even if this SQL statement is used within PL/SQL. For this reason, a lot of guys write functions that return a NUMBER (1 or 0) or a string (' t ' or 'F') rather than return a BOOLEAN value.
I've implemented a short function which returns a Boolean value; When I compile it I get an error:
Error report:
ORA-06550: line 5, column 32:
PLS-00382: expression is of the wrong type
ORA-06550: line 6, column 4:
PLS-00306: wrong number or types of arguments in the call to "PUT_LINE '.
ORA-06550: line 6, column 4:
PL/SQL: Statement ignored
06550 00000 - "line %s, column % s:\n%s".
* Cause: Usually a PL/SQL compilation error.
* Action:
This error indicates a problem calling put_line; It has nothing to do with what returns the function.
-
Problem when calling a return function of SQL BOOLEAN in package type
Hi all
I'm having a problem when you try to call a SQL function in a package with the return BOOLEAN type
The SQL function signature is
####
CREATE OR REPLACE PACKAGE RMSOWNER. ORDER_ATTRIB_SQL *.
FUNCTION GET_PO_TYPE_DESC (O_error_message IN OUT VARCHAR2,
I_PO_TYPE IN VARCHAR2,
O_PO_TYPE_DESC IN OUT VARCHAR2)
RETURN A BOOLEAN VALUE;
####
Here is my java code
####
+ Cs3 CallableStatement = conn.prepareCall ("{?}") = call ORDER_ATTRIB_SQL. GET_PO_TYPE_DESC(?,?,?)} ");" +
+ CS3.registerOutParameter (1, java.sql.Types.BOOLEAN) +;
+ CS3.registerOutParameter (2, java.sql.Types.VARCHAR) +;
+ CS3.registerOutParameter (4, java.sql.Types.VARCHAR) +;
+ CS3. SetString (2, ""); +
+ CS3. SetString (3, "ST"); +
+ CS3. SetString (4, ""); +
+ ResultSet rs3 = cs3.executeQuery (); +
####
I get the following exception, I tried to change the (registerOutParameter) boolean sql type bit, but I've always found this exception.
But when I call all other functions with a return type other than boolean, they work perfectly well.
Please can someone help me solve this problem, I don't know if its something to do with classes of JDBC providers?
#####
+ java.sql.SQLException: ORA-06550: line 1, column 13: +.
+ PLS-00382: expression is of the wrong type.
+ ORA-06550: line 1, column 7: +.
+ PL/SQL: statement ignored +.
+ oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) +.
+ oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) +.
+ oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) +.
+ oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) +.
+ oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215) +.
+ oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954) +.
+ oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) +.
+ oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316) +.
+ oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422) +.
+ oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4394) +.
#####Looks like it's a Limitation of the jdbc drivers. Please visit the following link:
http://www-Camden.Rutgers.edu/help/documentation/Oracle/Java.815/a64684/typesup1.htmHere is an excerpt from above:
==========================================================
PL/SQL BOOLEAN, RECORD and the Types of TABLES of packingOracle JDBC drivers support the argument of appeal or return values of PL/SQL TABLE types (now known as indexed arrays by), REGISTRATION or BOOLEAN.
To work around the problem, you can create wrapper procedures that manage data like types supported by JDBC. For example, to wrap a stored procedure that uses PL/SQL Boolean values, you can create a stored procedure that takes a character or a number of JDBC and passes to the original procedure as BOOLEAN or, for an output parameter, accepts a BOOLEAN of the original procedure argument and pass it as a TANK or a NUMBER to JDBC. Similarly, to wrap a stored procedure that uses PL/SQL records, you can create a stored procedure that maintains a record in its individual components (such as CHAR and NUMBER). To wrap a stored procedure that uses PL/SQL tables, you can divide the data into components or perhaps use Oracle collection types.
-
How to call a function that returns a SYS_REFCURSOR?
Here's the situation.
If I use ODP. NET to get a REF_CURSOR of a procedure in a package that it works without a hitch.
If I use ODP .NET to run an Oracle function that returns a REF CURSOR, all sorts of things fool you.
I use .NET 3.5 and ODP .NET version 2.112.1.2 (11 G). My Oracle database is 9.2.0.7.0
There is this function returns a REF CURSOR.
The code looks something like this.
.NET code looks like this. It's after a few adjustments.CREATE OR REPLACE FUNCTION SENDMEAREFCURSOR RETURN SYS_REFCURSOR IS X_REF genPkg.genericcursor; BEGIN OPEN X_REF for SELECT customer_id, name FROM CUSTOMERS; Return X_REF; END;
What should I do to get the refCursor?private static OracleDataReader FireMyFunc(OracleConnection oc) { try { OracleCommand cmd = new OracleCommand(); cmd.Connection = oc; //cmd.CommandText = "SELECT sendmearefcursor FROM DUAL"; //cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = "sendmearefcursor"; cmd.CommandType = CommandType.StoredProcedure; OracleParameter prm = cmd.CreateParameter(); prm.OracleDbType = OracleDbType.RefCursor; prm.ParameterName = "returncurse"; prm.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(prm); cmd.ExecuteNonQuery(); return (OracleDataReader) prm.Value; //Throws an UnableToCast exception. } catch (System.Exception ex) { Console.WriteLine(String.Format("FireMyFunc: {0}",ex.ToString())); throw; } }
Hello
You can use the GetDataReader of the OracleRefCursor object to return the datareader object.
OracleRefCursor rc is prm (OracleRefCursor). Value;
return of rc. GetDataReader();HTH
Jenny -
The API XNET-CAN allows to hardware configuration such that a call to read the framework/signal does not return until the message is received (no need to query the buffer, call to the function is as an event... function returns when a message is received) or if a time-out occurs). I don't really want to query for data, unless I absolutely have to. My plan is to have parallel code to wait for a specific message to receive and respond (should be very fast!) whil a different loop receives all other executives.
A time-out of the reading function call would work pretty good, but it doesn't seem to work (see extracts attached). The value of timeout only seems to work (no error property) is a value of 0 seconds.
Thank you
Todd
Change of a single point of session for a queued session.
-
Make sure that wire you all the inputs and outputs of your node library function call?
This document says "make sure that wire you all the inputs and outputs of your node library function call.
But all the terminals on the right side of the call library node considered "outputs" referred to in the foregoing statement?
This same document continues to show the right way to allocate memory with this illustration and in the illustration, the right "outputs" are left without junctions.
Am I right in assuming that the only terminals that count as outputs, those who use the code of the DLL (modify) as output? If it is true, then all other terminals output associated with the values entered alone so don't really account as outputs, correct?
In the parameter call-library configuration screen there is a "Constant" check box and the help that he wrote "indicates whether the parameter is a constant." What is this box? for me in the setup of the DLL call
Finally, assuming that a call from the DLL that is supposed to write in these five outputs, is it legitimate to use constants like this to book a space of memory for the output values?
How about if local variables associated with the output terminals are used instead?
Despite the linked document, it is necessary to connect the corresponding entry for simple scalar output parameters (for example a digital). LabVIEW automatically allocate memory for them. If you do not want the entries for all the output wire anyway, there should not be no difference between a constant and a local variable; I would use a constant to avoid useless local variables.
For settings that are only entries, there is not need to connect the outlet side. It's a bit simplistic since all parameters are entered only and get one result (other than the return value), you pass a memory address and modify the content to this address, but LabVIEW manages this dereferencing pointer for you. If you want to really get into the details, learn more about pointers in C.
The "Constant" check box acts as the qualifier "const" on a c function parameter. It tells the compiler that the function you are calling will not change this setting. If you call a function prototype includes a const parameter, then you must mark this as a constant parameter when you configure the call library function node. Otherwise, I wouldn't worry on this subject.
-
Call a procedure that returns an array of the results of dotnet
Hi I have a function in the database (see below), I am creating a Web page and you want to call the function and get the results, how can I do this in dotnet using the ODP.net. does anyone have a code please... I called procedures in the database that return of refCursors but not tables.
Type rec_user is record (call varchar2 (200),)
Identification number);
Type tab_user is table of the rec_user;
function populate_user (piusername in varchar2) return tab_user;
------------------------------
Concerning
AshHello
Registration table is a PLSQL type and cannot be called from OIC (this is what ODP.NET is written in). If you change the procedure to return the table or Varray of the object instead, you could do that with the support of the UDT available in ODP 11106.21 and higher.
There is an example in this thread that you may find useful:
By the way the table of the UDT or Collection, as IN to the OracleDbType.InputOutput HELPIt will be useful,
Greg -
Calling an Oracle stored procedure that returns a REF cursor
Hi guys,.
I'm calling an Oracle stored procedure that returns a REF CURSOR. Here is the piece of code that I'm working on:
procedure TC307_MAIN (p_program varchar2, varchar2, varchar2, result_set OUT eng_cur p_engchgno p_project) as
Start
IF (p_program = 'Navybased' and p_project = 'PROTECTOR-BUILD') THEN
result_set: = comments. Tc307_Eng_Chg_Rpt.TC307_RNZN (p_engchgno, result_set = >);
END IF;
end TC307_MAIN;
procedure TC307_RNZN (p_engchgno varchar2, result_set IN OUT eng_cur) as
Start
end TC307_RNZN;
PL/SQL code behind TC307_RNZN is big enough, that's why I've not stuck here. Basically, the second stored procedure executes a PLSQL statement and returns a result set. I need to return the result_set in the main proceedings based on nested else statement which I am still trying to build. I get a compilation... error can someone guide me with the correct method to call the second stored procedure and returning in the main proceedings.
Thank you very much.Rohan,
Try this
procedure TC307_MAIN(p_program varchar2, p_project varchar2, p_engchgno varchar2, result_set OUT eng_cur) as begin IF (p_program = 'RNZN' and p_project = 'PROTECTOR-BUILD') THEN -- This is a procedure not a function guest.Tc307_Eng_Chg_Rpt.TC307_RNZN(p_engchgno, result_set); --UR compilation error on this line* END IF; end TC307_MAIN;
SS
http://DB-Oracl.blogspot.com -
Oracle query of relay and access function call does not return the list
Thanks to aid in a previous post, I received, I created an oracle 10 g feature that returns the list after you run the sql code it contains. It works in oracle, using sql developer.
I need to have the list that he returned to see the place in MS Access via a relay request. It does not work so far. The string for connection etc is ok, I'm able to use passthrough queries to run sql strings correctly. But when I try to call the function through the request of relay and access initially nothing seems to happen (IE no list) and if I try to run again, there is an "ongoing call odbc error. Current operation cancelled "." There are only three records in the table. I'm missing something, someone can he spot?
The application of relay and looks like this
Select * from fn_testvalues of the double
Once that is running in oracle.
To create the test table and 2 functions below.
CREATE TABLE t_values (MyValue varchar2 (10));
Table created
INSERT INTO t_values)
SELECT 'Merced' c1 FROM dual UNION ALL
SELECT "Pixie" dual UNION ALL
SELECT "452" DOUBLE);
3 lines inserted
FUNCTION to CREATE or REPLACE RETURN NUMBER IS fn_isnum(p_val VARCHAR2)
n_val NUMBER;
BEGIN
n_val: = to_number (p_val);
RETURN 1;
EXCEPTION
WHILE OTHERS THEN
RETURN 0;
END;
/
Feature created
table test:
SELECT val, isnum fn_isnum (MyValue)
OF t_values;
VAL ISNUM
---------- ----------
Merced 0
Pixie 0
1 452
Now the function that is called in the application of relay:
create or replace function fn_testvalues
sys_refcursor is back
RC sys_refcursor;
Start
Open rc for
Select t_values.*, fn_isnum (MyValue) t_values IsNum;
Return (RC);
end fn_testvalues;Why not?
satyaki> satyaki>select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for Linux: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production Elapsed: 00:00:00.00 satyaki> satyaki> satyaki>create or replace view bb 2 as 3 select * 4 from emp; View created. Elapsed: 00:00:00.00 satyaki> satyaki> satyaki>select * from bb; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO JOB1 DOB ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- --------- ---- 7521 WARD SALESMAN 7698 22-FEB-81 226.88 500 30 SALESMAN 7654 MARTIN SALESMAN 7698 28-SEP-81 1815 1400 30 SALESMAN 7788 SCOTT ANALYST 7566 19-APR-87 598.95 20 ANALYST 7839 KING PRESIDENT 17-NOV-81 7260 10 PRESIDENT 7844 TURNER SALESMAN 7698 08-SEP-81 2178 0 30 SALESMAN 7876 ADAMS CLERK 7788 23-MAY-87 159.72 20 CLERK 7900 JAMES CLERK 7698 03-DEC-81 1379.4 30 CLERK 7902 FORD ANALYST 7566 03-DEC-81 5270.76 20 ANALYST 7934 MILLER CLERK 7782 23-JAN-82 1887.6 10 CLERK 7566 Smith Manager 7839 23-JAN-82 1848 0 10 Manager 23-JAN-89 7698 Glen Manager 7839 23-JAN-82 1848 0 10 Manager 23-JAN-89 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO JOB1 DOB ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- --------- ---- 1 boock 12 rows selected. Elapsed: 00:00:00.00 satyaki> satyaki> satyaki>select * 2 from bb 3 where empno = &eno; Enter value for eno: 7521 old 3: where empno = &eno new 3: where empno = 7521 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO JOB1 DOB ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- --------- ---- 7521 WARD SALESMAN 7698 22-FEB-81 226.88 500 30 SALESMAN Elapsed: 00:00:00.00 satyaki> satyaki>
Kind regards.
LOULOU.
-
Selection of a function that returns a sys refcursor or alternative
I have a query that returns a result set of three columns, namely the SSN, the PAID_YEAR and the PAID_TOTAL. This query, I can:
- Create a view and then question him.
- Create a function result set and return
If I go the first way, that a simple request like this takes more than 20 seconds:
SELECT PAID_YEAR,PAID_TOTAL FROM VIEW_1 WHERE SSN=12345678912882;
I know it's because when I query a view engine first brings all the rows in the view and then filters the lines for the criteria provided.
If I go the second way I can send only a parameter and make the engine look for only the rows that match the condition and the Recordset. But I don't know how then SELECT this result set returned. I took a look at the tables in pipeline, but do not understand how to their advantage. So my final question is if it is somehow possible to select from the result set returned by a function like this:
SELECT * FROM FUNCTION_1(12132323232).
If Yes, then how, if not, what would be another way?
I know it's because when I query a view engine first brings all the rows in the view and then filters the lines for the criteria provided.
No - you don't "know that" because it is not true. Just check out the plan of the command explain to yourself. Oracle can always use appropriate indexes so that only the needed rows are returned.
So my final question is if it is somehow possible to select from the result set returned by a function like this:
SELECT * FROM FUNCTION_1(12132323232).
No - you can't do it like that. You must use the TABLE function to process the result of the function defined in a table:
'SELECT * FROM TABLE(FUNCTION_1(12132323232)).
-type to match record emp
create or replace type emp_scalar_type as an object
(EMPNO NUMBER 4,
ENAME VARCHAR2 (10),
USE VARCHAR2 (9).
MGR NUMBER 4,
HIREDATE DATE,
NUMBER OF SAL (7, 2)
NUMBER OF COMM (7, 2)
DEPTNO NUMBER (2)
)
/-records of the emp table
create or replace type emp_table_type to table of emp_scalar_type
/-function of pipelined
create or replace function get_emp (p_deptno number)
return emp_table_type
PIPELINED
as
TYPE EmpCurTyp IS REF CURSOR RETURN emp % ROWTYPE;
emp_cv EmpCurTyp;
l_rec emp % rowtype;
Start
Open emp_cv SELECT * from emp where deptno = p_deptno;
loop
extract the emp_cv in l_rec;
When the output (emp_cv % notfound);
line of conduct (emp_scalar_type (l_rec.empno, LOWER (l_rec.ename),
l_rec.job, l_rec.mgr, l_rec.hiredate, l_rec.sal, l_rec.comm, l_rec.deptno));
end loop;
return;
end;
/
Select * from table (get_emp (20)) -
How to expose a function that returns a XML as a Web Service?
---------------------------------------------------------------------------------
Oracle Database 11 g Release 11.2.0.3.0 - 64 bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production."
AMT for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
---------------------------------------------------------------------------------
After reviewing the documentation of oracle on the generation of xml data in the database, I managed to select normal tables and return a result xml exactly as I want:
That gets me this:-- My types create or replace TYPE CHILD_T AS OBJECT ("@ID" VARCHAR2(20), "@NAME" VARCHAR2(20)); create or replace TYPE CHILDREN_T AS TABLE OF CHILD_T; create or replace TYPE PARENT_T AS OBJECT ("@ID" VARCHAR2(20), CHILDREN CHILDREN_T ); -- The actual select SELECT XMLFOREST ( PARENT_T(d.id, CAST ( MULTISET (SELECT c.id, c.name FROM child c WHERE c.parent_id = p.id) AS CHILDREN_T ) ) AS "Parent" ) FROM parent p;
It's perfect, but how to expose this result as a Web Service like this link?<Parent ID="1"> <CHILDREN> <CHILD_T ID="1" NAME="xxxxx" /> <CHILD_T ID="2" NAME="yyyyy" /> <CHILD_T ID="3" NAME="zzzzz" /> </CHILDREN> </Parent>
I tried this function:http://localhost:8080/orawsv/MY_USER/GET_CHILDREN?wsdl
But when I access although .NET Compact Framework, I get this: "'Element' is an invalid XmlNodeType.FUNCTION GET_CHILDREN ( PARENT_ID IN VARCHAR2 ) RETURN CLOB AS L_RESULT CLOB; BEGIN SELECT to_clob(XMLFOREST ( PARENT_T (p.id, CAST ( MULTISET (SELECT c.id, c.name FROM child c WHERE c.parentId = p.id) AS CHILDREN_T ) ) AS "ParentObj" )) AS MY_XML INTO L_RESULT FROM parent p WHERE p.i = PARENT_ID; RETURN (L_RESULT); END GET_CHILDREN;
As you can see, I just need a simple way to transport information between a Windows CE handheld computer and our database. Use functions that return simple values.
Do I have to return the data as xml?
What return value I should use? Varchar2 throws a buffer error output.
---------
It is my first post here, also my first contact with OracleDB, and Web Services.Hello
Welcome to Oracle and XML DB!
After reviewing the documentation of oracle on the generation of xml data in the database, I managed to select normal tables and return a result xml exactly as I want:
Have you also read about the SQL/XML functions?
You don't have to create objects of type SQL to generate XML data.Using only XMLElement, XMLAgg, XMLAttributes, etc., you should be able to generate any kind of structure complex relational data and with total control over the names (which you don't have with the types of objects).
Your example can be rewritten to:SELECT XMLElement("Parent", XMLAttributes(p.id as "Id") , XMLElement("Children", ( SELECT XMLAgg( XMLElement("Child", XMLAttributes( c.id as "Id" , c.name as "Name" ) ) ) FROM child c WHERE c.parent_id = p.id ) ) ) FROM parent p WHERE p.id = :parent_id ;
It's perfect, but how to expose this result as a Web Service like this link?
[...]
Do I have to return the data as xml?Yes.
Define the return as XMLType data type:FUNCTION GET_CHILDREN ( PARENT_ID IN VARCHAR2 ) RETURN XMLTYPE AS L_RESULT XMLTYPE; BEGIN SELECT XMLElement("Parent", XMLAttributes(p.id as "Id") , XMLElement("Children", ( SELECT XMLAgg( XMLElement("Child", XMLAttributes( c.id as "Id" , c.name as "Name" ) ) ) FROM child c WHERE c.parent_id = p.id ) ) ) INTO L_RESULT FROM parent p WHERE p.id = PARENT_ID ; RETURN (L_RESULT); END GET_CHILDREN;
-
a function that returns the type with a table joint!
Good day to all,
I have a function that returns a type.
so I select it as:
Select * from table (function (param1, param2))
now I want to combine this with a table so that the settings for the service we get from the join table. Is this possible? And how?
I tried different options without success.
something like:
Select *.
table table (function (b.column1, b.columnb) x), tablea b
where x.a = b.col
Is this possible?
Thanks in advance?user564819 wrote:
something like:
Select *.
table table (function (b.column1, b.columnb) x), tablea b
where x.a = b.colIs this possible?
Somehow...
SQL> create or replace type TIntegers is table of integer; 2 / Type created. SQL> SQL> --// our sample pipeline simply spews 2 numbers for eevry number input - simple SQL> --// to use for the testcase below SQL> create or replace function FooPipe( n number ) return TIntegers pipelined is 2 begin 3 pipe row( trunc(n) ); 4 pipe row( trunc(n)*-1 ); 5 return; 6 end; 7 / Function created. SQL> SQL> with dataset( n ) as( 2 --// ignore this part as it only builts a base table 3 --// for us to use to select values for input to 4 --// to the pipeline - in "real world" use this table 5 --// will already exist 6 select 7 level 8 from dual 9 connect by level <= 10 10 ), 11 pipe_line( n, array ) as( 12 --// we run the pipeline as a nested table column 13 --// in the SQL projection - the CAST is important 14 --// in order to establish the nested table type 15 select 16 d.n, 17 cast( 18 FooPipe(d.n) as TIntegers 19 ) 20 from dataset d 21 ) 22 --// we now use a standard query to unnest the nested table column 23 select 24 p.n, 25 pipe_val.* 26 from pipe_line p, TABLE(p.array) pipe_val 27 / N COLUMN_VALUE ---------- ------------ 1 1 1 -1 2 2 2 -2 3 3 3 -3 4 4 4 -4 5 5 5 -5 6 6 6 -6 7 7 7 -7 8 8 8 -8 9 9 9 -9 10 10 10 -10 20 rows selected. SQL>
Not sure I like it. What is the real problem that this method (driving a pipeline with input of a base table rows) is supposed to address? There may be a simpler and more elegant approach...
-
Function that returns only numbers
Is it possible to have a SQL function that returns only numbers in a varchar?
Example:
My PHONE_NUMBER table contains a field with a phone number in VARCHAR2, it can contain:
1-888-444-5555 or (514) 444-6666 or 514-222-4444 ext: 100
I want to have a fuction which back me:
18884445555 and 5144446666...
Thanks for the helpHello
For a copy of the string s with everything except the numbers (0-9), was deleted:
REGEXP_REPLACE ( s , '[^0-9] )
The expression above will work in Oracle 10 and higher.
In any version, you can use TRANSLATE to remove the numbers, then reuse TRANSLATE to remove these characters from the s.TRANSLATE ( s, , '0' || TRANSLATE ( s , 'A0123456789' , 'A' ) , '0' )
-
Function that return the name of the current report
Hello
Anyone know if there is a function that returns the name of the current report?, similar to GET_APPLICATION_PROPERTY (CURRENT_FORM) in the forms.
Tnks,
LEFMHello
You can use the builtin: SRW. GET_REPORT_NAME
This function returns the file name of the running reporthttp://www.Oracle.com/webapps/online-help/reports/10.1.2/topics/htmlhelp_rwbuild_hs/rwrefex/PLSQL/builtins/SRW/srw_get_report_name.htm
NOTE: it is not the name of the RDF file. Is the name defined in the reporting name property.
Concerning
Maybe you are looking for
-
When I try to start the application process, I get a message saying that my browser is not supported by the web site. He told me that Mozilla Firefox 3.6 is the browser that I need to run. Is it possible to go back?
-
M6-w105dx envy: envy x 360 m6 convertible w105dx screen after waking from sleep
Hello Whenever I put my laptop to sleep (I almost cover) and I try to wake up (I open the lid) the screen is full of small squares (they resemble pixels). I don't see a little square that moves when I move the mouse. If I turn it off by pressing the
-
Synchronization of webcam Logitech 910 problems
I have a webcam logitech 910, day 1, we could not see or hear each other at the same time. It's one or the other can see but not hear or we can hear but the video image is frozen. It's the second ive tried cam. The other parties have no problems conn
-
Installation of ROXIO MISSING of Lenovo recovery DVDs
Need help! Recovery installed OS from the Lenovo DVD delivered to me and Roxio or IBM recordnow don't get included in the installation. Hoped not to have to request another set of Lenovo recovery software. They have a FTP site with updates etc. I was
-
[no good answer by e-mail] The team seems to define 'accessibility' with regard to persons 'disabilities' ONLY. ===== Halo, users of Microsoft products. In Microsoft, is there a specific team who is responsible (evaluates) anything about accessibilit