How to set user defined type in binded parameter to NULL
Hello
I have a type in PL/SQL MY_ARRAY which is a array of VARCHAR2
and I want to call a procedure MY_PROC in OCCI, the procedure takes MY_ARRAY as its IN parameter, but I want to set the parameter to null. How can I do that?
"begin MY_PROC(:1); end;"
I tried setNull(1,OCCIVECTOR), but failed. and If i use MY_PROC(null), the compiler just tells me that SELF NULL parameter not allowed or sth like this.
any one can help me?
Have you found a solution ? I have pretty much the same issue with passing a NULL SDO_GEOMETRY to a stored procedure and I did this with a call to setNull( paramIndex, oracle::occi::OCCIPOBJECT ) on the statement object, but it also fails with the followins error: "ORA-24360: Type Descriptor Object not specified for Object Bind/Define"
Similar Messages
-
How to set user defined type ( SDO_GEOMETRY ) in binded parameter to NULL
I am trying to send a null sdo_geometry object as parameter to a stored procedure by a call to setNull( paramIndex, oracle::occi::OCCIPOBJECT ) on the statement object, but I am getting the following error: "ORA-24360: Type Descriptor Object not specified for Object Bind/Define".
Does anybody succeded to send a NULL user defined object to a stored procedure ?
Many thanks,
AndreiThis is a problem fixed in 10.2. As a workaround you can try :-
sdo_geometry *obj = new sdo_geometry();
obj->setNull();
stmt->setObject(col,obj);
Thanks,
Shankar -
User Defined Type - Array bind Query very slow
Hi.
I have following Problem. I try to use Oracle Instant Client 11 and ODP.NET to pass Arrays in SELECT statements as Bind Parameters. I did it, but it runs very-very slow. Example:
- Inittial Query:
SELECT tbl1.field1, tbl1.field2, tbl2.field1, tbl2.field2 ... FROM tbl1
LEFT JOIN tbl2 ON tbl1.field11=tbl2.field0
LEFT JOIN tbl3 ON tbl2.field11=tbl3.field0 AND tbll1.field5=tbl3.field1
...and another LEFT JOINS
WHERE
tbl1.field0 IN ('id01', 'id02', 'id03'...)
this query with 100 elements in "IN" on my database takes 3 seconds.
- Query with Array bind:
in Oracle I did UDT: create or replace type myschema.mytype as table of varchar2(1000)
than, as described in Oracle Example I did few classes (Factory and implementing IOracleCustomType) and use it in Query,
instead of IN ('id01', 'id02', 'id03'...) I have tbl1.field0 IN (select column_value from table(:prmTable)), and :prmTable is bound array.
this query takes 190 seconds!!! Why? I works, but the HDD of Oracle server works very hard, and it takes too long.
Oracle server we habe 10g.
PS: I tried to use only 5 elements in array - the same result, it takes also 190 seconds...
Please help!I recommend you generate an explain plan for each query and post them here. Based on what you have given the following MAY be happening:
Your first query has as static IN list when it is submitted to the server. Therefore when Oracle generates the execution plan the CBO can accurately determine it based on a KNOWN set of input parameters. However the second query has a bind variable for this list of parameters and Oracle has no way of knowing at the time the execution plan is generated what that list contains. If it does not know what the list contains it cannot generate the most optimal execution plan. Therefore I would guess that it is probably doing some sort of full table scan (although these aren't always bad, remember that!).
Again please post the execution plans for each.
HTH! -
Access result set in user define type of table
here is the situation. I have a stored procedure that dequeues messages of a AQ and passes them as an OUT parameter in a collection of a user defined type. The same type used to define the queues. The java code executes properly but seems like we don't/can't access the result set. We don't receive any erros but don't know how to access the results. I've included relevant parts of the problem.
I know this should be doable but........Can someone please tell us what we are doing wrong....thanks in advance.
-----create object type
create type evt_ot as object(
table_name varchar(40),
table_data varchar(4000));
---create table of object types.
create type msg_evt_table is table of evt_ot;
----create queue table with object type
begin
DBMS_AQADM.CREATE_QUEUE_TABLE (
Queue_table => 'etlload.aq_qtt_text',
Queue_payload_type => 'etlload.evt_ot');
end;
---create queues.
begin
DBMS_AQADM.CREATE_QUEUE (
Queue_name => 'etlload.aq_text_que',
Queue_table => 'etlload.aq_qtt_text');
end;
Rem
Rem Starting the queues and enable both enqueue and dequeue
Rem
EXECUTE DBMS_AQADM.START_QUEUE (Queue_name => 'etlload.aq_text_que');
----create procedure to dequeue an array and pass it OUT using msg_evt_table ---type collection.
create or replace procedure test_aq_q (
i_array_size in number ,
o_array_size out number ,
text1 out msg_evt_table) is
begin
DECLARE
message_properties_array dbms_aq.message_properties_array_t :=
dbms_aq.message_properties_array_t();
msgid_array dbms_aq.msgid_array_t;
dequeue_options dbms_aq.dequeue_options_t;
message etlload.msg_evt_table;
id pls_integer := 0;
retval pls_integer := 0;
total_retval pls_integer := 0;
ctr number :=0;
havedata boolean :=true;
java_exp exception;
no_messages exception;
pragma EXCEPTION_INIT (java_exp, -24197);
pragma exception_init (no_messages, -25228);
BEGIN
DBMS_OUTPUT.ENABLE (20000);
dequeue_options.wait :=0;
dequeue_options.correlation := 'event' ;
id := i_array_size;
-- Dequeue this message from AQ queue using DBMS_AQ package
begin
retval := dbms_aq.dequeue_array(
queue_name => 'etlload.aq_text_que',
dequeue_options => dequeue_options,
array_size => id,
message_properties_array => message_properties_array,
payload_array => message,
msgid_array => msgid_array);
text1 := message;
o_array_size := retval;
EXCEPTION
WHEN java_exp THEN
dbms_output.put_line('exception information:');
WHEN no_messages THEN
havedata := false;
o_array_size := 0;
end;
end;
END;
----below is the java code....
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Struct;
import oracle.jdbc.driver.OracleCallableStatement;
import oracle.jdbc.driver.OracleTypes;
public class TestOracleArray {
private final String SQL = "{call etlload.test_aq_q(?,?,?)}";//array size, var name for return value, MessageEventTable
private final String driverClass = "oracle.jdbc.driver.OracleDriver";
private final String serverName = "OurServerName";
private final String port = "1500";
private final String sid = "OurSid";
private final String userId = "OurUser";
private final String pwd = "OurPwd";
Connection conn = null;
public static void main(String[] args){
TestOracleArray toa = new TestOracleArray();
try {
toa.go();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
private void go() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
Class.forName(driverClass).newInstance();
String url = "jdbc:oracle:thin:@"+serverName+":"+port+":"+sid;
conn = DriverManager.getConnection(url,userId,pwd);
OracleCallableStatement stmt = (OracleCallableStatement)conn.prepareCall(SQL);
//set 1 input
stmt.setInt(1, 50);
//register out 1
stmt.registerOutParameter(2, OracleTypes.NUMERIC);
//register out 2
stmt.registerOutParameter(3, OracleTypes.ARRAY, "MSG_EVT_TABLE");
* This code returns a non-null ResultSet but there is no data in the ResultSet
* ResultSet rs = stmt.executeQuery();
* rs.close();
* Tried all sorts of combinations of getXXXX(1);
* All return the same error Message: Invalid column index
* So it appears that the execute statment returns no data.
stmt.execute();
Struct myObject = (Struct)stmt.getObject(1);
stmt.close();
conn.close();
}Hi,
Sorry but I'd refer you to the following sections (and code samples/snippets) in my book:
Mapping User-Defined Object Types (AD) to oracle.sql.STRUCT in section 3.3, shows how to pass user defined types as IN, OUT,IN/OUT
JMS over Streams/AQ in the Database: shows how to consume AQ
message paylod in section 4.2.4
CorporateOnine, in section 17.2, show how to exchanges user defined type objects b/w AQ and JMS
All these will hopefully help you achieve what you are trying to do.
Kuassi -
How to execute function takes user defined type parameters as input &output
Hi All,
I want to execute a function which takes user defined type as input & output parameters. But i don't know how to execute that function in pl/sql statements.
CREATE TYPE T_INPUT AS OBJECT
USER VARCHAR2(255),
APPLICATION VARCHAR2(255),
REFERENCE VARCHAR2(30)
) NOT FINAL;
CREATE TYPE T_ID UNDER T_INPUT
E_ID VARCHAR2 (50),
CODE VARCHAR2 (3),
SERVICE VARCHAR2 (10),
C_TYPE VARCHAR2 (1)
) NOT FINAL;
CREATE TYPE T_OUTPUT AS OBJECT
R_STATUS NUMBER(10),
E_DESC_LANG_1 VARCHAR2(1000),
E_DESC_LANG_2 VARCHAR2(1000),
A_REFERENCE VARCHAR2(30)
) NOT FINAL;
CREATE TYPE T_INFO UNDER T_OUTPUT
E_INFO XMLTYPE
CREATE FUNCTION Get_Dtls
I_DETAILS IN T_ID,
O_DETAILS OUT T_INFO
RETURN NUMBER AS
END;
Here
1. T_ID is an input parameter which is a combination of T_ID + T_INPUT,
2. T_INFO is an output parameter which is a combination of T_INFO + T_OUTPUT.
Here i'll assign the T_ID values.
--- T_INPUT values
USER = "admin";
APPLICATION = "test";
REFERENCE = "null";
---- T_ID values
E_ID = "1234";
CODE = "TTT";
SERVICE = "NEW";
C_TYPE = "P";
Now i want to execute Get_Dtls function with T_ID,T_INFO parameters in pl/sql statements.
I want to catch the E_INFO value from T_INFO type.
How can i Do this ?
Pls Help. Thanxs in advance.
Anil.I am very new to this. New to Oracle, PL/SQL, OO programming or testing?
set serveroutput on
declare
tst_obj ctype;
begin
tst_obj := pkg.proc(11);
dbms_output.put_line('id='||tst_obj.id||'::code='||tst_obj.code||'::usage='||tst_obj.usage);
end;
/Generally I disapprove of the use of DBMS_OUTPUT (for just about anything) but it is sufficient to demonstrate the basic principle.
Really you should start using proper testing practices, ideally with an automated test harness like QUTE.
Cheers, APC
Blog : http://radiofreetooting.blogspot.com/ -
How to convert Collection to user defined type in db
Hello All,
I am using Apex 4.1.0.00.32 and Oracle 11g.
I have page process to store the user selected rows (keys) in a collection as follows:
declare
temp varchar2(4000);
vrow number;
begin
apex_collection.CREATE_OR_TRUNCATE_COLLECTION('SELECTED_PERSONS');
IF (apex_application.g_f32.COUNT > 0) THEN
FOR ii IN 1 .. htmldb_application.g_f32.COUNT
LOOP
vrow := apex_application.g_f32(ii);
APEX_COLLECTION.ADD_MEMBER('SELECTED_PERSONS', apex_application.g_f30(vrow));
END LOOP;
END IF;
end;I need to call a database function which takes an user defined type VC_ARRAY_1 defined as:
create or replace TYPE "VC_ARRAY_1" AS TABLE OF VARCHAR2(4000) How do I convert the collection to VC_ARRAY_1, so that I can call the db function?
Thanks,
RoseHi Joel,
Yes, the collection contains the person_ids. But, I am selecting from a function which returns a pipelined table. In Oracle Database, few user defined types and functions are defined as given below:
create or replace TYPE "VC_ARRAY_1" as table of varchar2(4000)
create or replace FUNCTION "GET_ARRAY" ( p_array IN varchar2, p_delimiter IN varchar2 default ':') return VC_ARRAY_1 PIPELINED
create or replace TYPE "AFFECTED_INDIVIDUAL" as object("PERSONKEY" VARCHAR2(4000), "FIRST_NAME" VARCHAR2(4000), "LAST_NAME" VARCHAR2(4000)… more variables)
create or replace TYPE "AFF_IND_TAB" as table of "AFFECTED_INDIVIDUAL"
create or replace FUNCTION GET_AFF_INDIVIDUALS(personKeys IN VC_ARRAY_1) return AFF_IND_TAB PIPELINEDThe function GET_AFF_INDIVIDUALS uses several tables and returns pipelined table. In Apex, I have a SQL query that feeds the Report query.
select * from table (get_aff_individuals(get_array(:F_SELECTED_PERSONS, ',')))The application item F_SELECTED_PERSONS is a varchar2 that contains comma separated person ids. I want to replace the application item with Apex collection. Initially, I thought that I can convert the apex collection to an array of vc_array_1.
Thanks for your time and help.
Rose -
How can an user defined Transaction type in Inventory be configured in IB?
Need to know how to make an user defined transaction to update the status in IB automatically. i.e. suppose there is an user defined transaction "XYZ". I need to update the instance stause of an item to "CANCELLED" once that transaction happens on the item.
Edited by: user13340970 on Aug 13, 2010 7:14 AMHi Atheek,
I was looking at doing the transform manually, but my challenge is how to parse the inbound String into XML Elements with their properties. For example:
Example Message:
<abd:TypedDocument>
<abd:someElement>
<abd:aString><jkl:embeddedMessage jkl:attributeABc="Hello There"><jkl:someOtherElement>OSB Rules!<jkl:someOtherElement><jkl:aNumber>123456</jkl:aNumber></jkl:embeddedMessage>
</abd:aString>
</abd:someElement>
</abd:TypedDocument>
If I get the value of the embedded XML as a string, how can I parse our or address the various elements and attributes in the embedded XML? I was hoping to use:
$aString cast as jkl:embeddedMessage
But on OSB10g this fails. Is there another way with XQuery or XSL to convert an embedded XML that comes in as a string, into a complex User-Defined type?
Thanks,
David. -
How to create a user defined type base on existing table
Hi Everyone,
Are there any way to create a user defined type base on existing table us as :
CREATE OR REPLACE Type MyTable Is Table Of PART%ROWTYPE;
where Part is a table.
Regards,
JDangHi JDAng,
Can't be done. %ROWTYPE is a PL/SQL construct, and as such cannot be used in SQL.
Regards
Peter -
How to create user defined button in alv report
how to create user defined button in alv report
thnks in advance.Hi,
U can define it the the PF-STATUS ( Menu for ALV ).
For that u have to define it in the EVENTCAT.
form z_eventcat using p_i_eventcat type slis_t_event.
data: i_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = p_i_eventcat
exceptions
list_type_wrong = 1
others = 2.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
clear i_event.
read table p_i_eventcat with key name = slis_ev_top_of_page into
i_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE' to i_event-form.
append i_event to p_i_eventcat.
endif.
read table p_i_eventcat with key name = slis_ev_pf_status_set into i_event.
if sy-subrc = 0.
move 'SET_PF_STATUS' to i_event-form.
append i_event to p_i_eventcat.
endif.
clear i_event.
read table p_i_eventcat into i_event with key name = slis_ev_user_command .
if sy-subrc = 0.
move 'USER_COMMAND' to i_event-form.
append i_event to p_i_eventcat.
endif.
And in the DISPLAY
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = v_progname
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_grid_title = v_gridtitle
i_save = 'A'
is_layout = i_layout
it_fieldcat = i_fieldcat[]
it_sort = i_sortinfo
it_events = i_eventcat
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = it_final
exceptions
program_error = 1
others = 2
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
*MENU SETTINGS.
form set_pf_status using rt_extab type slis_t_extab.
set pf-status 'ALV_MENU'.
endform. "SET_PF_STATUS
endform. " Z_EVENTCAT
Now double click on ALV MENU nad u can create a button in the application bar.
Regards,
Pritha. -
Table OF user defined type in c#
Hello
I am running C# using Oracle (PL/SQL, provider ODP.NET
11.1.0.6.20) and I have a procedure which at the moment returns a table of
records. The code below demonstrates this.
TYPE R_OutData_tab IS RECORD ( ... );
TYPE OutData_tab IS TABLE OF R_OutData_tab INDEX BY BINARY_INTEGER;
PROCEDURE PROPERTY_GET (tOutData OUT <packagename>.OutData_tab);
Since .NET doesn't support Oracle records I'm looking into rewriting the
procedure so that it returns a table of a user defined type instead. The
code below demonstrates this.
create type person_type as object (name varchar2(30), address varchar2(60),
age varchar2(3));
TYPE person_table IS TABLE OF odp_obj1_sample_person_type;
PROCEDURE PERSONS_GET(out_persons OUT person_table);
I know how to handle a single user-defined type in .NET returned from a
Oralce procedure but what I need to do now is to receive a or pass table of a user
defined type using procedure. Is this supported in .NET?Dear ,
I have posted a similar kind of reply in one of the thread which may help u defining the User Defined Tabel /Filed .Just check this Out :
For cm25/CM21 : Assuming that you have all the other set up for Capacity Requirement in place , please note the belwo steps for layout design for CM25 OR cm21 or cm22( all you will be used same overall profile )
1.Make sure that you have proper Overall profile defined in OPD0-Define Overall profile .Here u will define Time Profile , Startegy prfoile . Lay out Profile etc .
2.To paint your layout your soultion is to Goto -CY38-Pop down the menu -Select the Lay out Key which have been used as lay out -Goto Change Mode (Pencil symbol)-Now you will find the fields are high ligheted as per CM25 dipaly in a sequnce -You can un chekcde the Filed like Operation , Operation text , Setup what ever you do not want to show in Order Pool and Hit SAVE butotn and come back .
CM25 --> Settings --> Display Profiles --> Planning tab.profile --> I01 --> Layout ID ( Example : 'SAPSFCLA05') which is Main Capacity Lay out id .
If you goto CY38-Pop down the menu -You will find Main Capcitity Lay out Id : Example SAPSFCAS01 -Enter this lay out and chenage accordingly as I have explained in above
Once you save this , then go back to CM25 and execute with coupe of work centres to check how is the order pool looks now .
Refer this threade for Layout Id and option which u may need for CM25 front end
Exception messages in CM21 or CM25
I hope this should work
Regards -
View Object with User Defined Type input
I am trying to use a View Object with a query that requires a user defined object as an input parameter.
I have the query working with a PreparedStatement, but would like to use a View Object.
When I use the PreparedStatement, I prepare the user defined type data like this:
// get the data into an object array
Object[] wSRecObjArr = wSRec.getObjectArray();
// set up rec descriptor
StructDescriptor WSRecDescriptor = StructDescriptor.createDescriptor("WS_REC",conn);
// populate the record struct
STRUCT wSRecStruct = new STRUCT(WSRecDescriptor,conn,wSRecObjArr);
Then I can use this in the PreparedStatement like this:
OraclePreparedStatement stat = null;
ResultSet rs = null;
stat = (OraclePreparedStatement)conn.prepareStatement("Select test_pkg.test_function(?) FROM DUAL");
stat.setSTRUCT(1, wSRecStruct);
rs = stat.executeQuery();
I would like to do the same process with a View Object instead of the PreparedStatement.
My question is "How do I create the input objects"?
I obtain the View Object from the Application Module using findViewObject(). I don't actually have a connection object to pass into the StructDescriptor.createDescriptor method.
I have tried just using Java Object Arrays (Object[]) to pass the data, but that gave an error:
oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation.
Any help or pointers are greatly appreciated.
Thank you.
Edited by: 942120 on May 1, 2013 8:45 AM
Edited by: 942120 on May 1, 2013 8:46 AM
Edited by: 942120 on May 1, 2013 9:05 AM
Edited by: 942120 on May 1, 2013 9:06 AMCustom domains are the way to go.
When I try to pass custom domains that represent my user defined types - it works.
However, one of the functions requires a table of a user defined type be passed in.
I tried creating a domain of the table type. It forces me to add a field during creation (in JDEV), so I tried adding a field of type Array of Element of the domain representing the user defined type.
I populate the table by setting the field I created, but the table is empty in PL/SQL (TEST_TAB.COUNT = 0).
I also tried passing the oracle.jbo.domain.Array object, but that produced an error:
java.sql.SQLException: ORA-06553: PLS-306: wrong number or types of arguments in call
I also tried passing Object[], but that produced an error:
oracle.jbo.SQLStmtException: JBO-27122: SQL error during statement preparation.
How do I properly create, and pass an domain that represents a table of a user defined type?
When I use a OraclePreparedStatement, I can pass a oracle.sql.ARRAY using stat.setARRAY.
Thank you for the help you have provided, and any future advice.
JDEV 10.1.2.3
JDBC 10.2.0.5
Edited by: 942120 on May 13, 2013 7:13 AM
Edited by: 942120 on May 13, 2013 7:16 AM -
Selecting Columns with User Defined Types... in PHP
I've looked all over google and this forum and can't find anything about this... here's what I've got:
a User Defined Type:
CREATE TYPE "ADDRESS" AS OBJECT (
ADDRESS VARCHAR2(256),
COUNTRY VARCHAR2(256),
STATE VARCHAR2(256),
SUBURB VARCHAR2(256),
TOWNCITY VARCHAR2(256)
and it is used in a column in one of my tables:
CREATE TABLE "SUPPLIERS" (
"ID" NUMBER,
"USER_ID" NUMBER,
"NAME" VARCHAR2(50),
"ADDRESS" "ADDRESS"
so that column "address" is of type "address". I am then able to insert a row using:
INSERT INTO "SUPPLIERS" VALUES(1,1,'name',ADDRESS('address','country','state','suburb','town city'));
and that all works as expected. I can select the data using iSqlPlus and get the result I expect;
ADDRESS('address', 'country', 'state', 'suburb', 'town city')
So here's the problem. I cannot reterieve the data as expected, using PHP. If I make a select statement on the table that excludes the ADDRESS column I get the results as expected. If the ADDRESS column is included I get an error when fetching the row:
ORA-00932: inconsistent datatypes: expected CHAR got ADT
I'm assuming this is because the the cell cannot be cast to a string. How can I select the row so that the ADDRESS column is returned as an object? Can I even? If I can't, I don't see the use of Object Data Types... :(
I have found that I can select a field of the type using:
SELECT t.ADDRESS.TOWNCITY FROM SUPPLIERS t;
But this is not ideal, because the whole idea was that I could (potentially) change the format for, in my example, an address, and not need to alter my SQL statements.
Any ideas??PHP OCI8 can currently only bind simple types. Here are two possible
solutions.
-- cj
create or replace type mytype as object (myid number, mydata varchar2(20));
show errors
create or replace type mytabletype as table of mytype;
show errors
create or replace procedure mycreatedata1(outdata out mytabletype) as
begin
outdata := mytabletype();
for i in 1..10 loop
outdata.extend;
outdata(i) := mytype(i, 'some name'||i);
end loop;
end;
show errors
-- Turn the data into a ref cursor (but PHP OCI8 doesn't use prefetching for ref cursors)
create or replace procedure mywrapper1(rcemp out sys_refcursor) as
data mytabletype;
begin
mycreatedata1(data);
open rcemp for select * from table(cast(data as mytabletype));
end mywrapper1;
show errors
-- Turn the data into two collections
-- This might be faster than returning a ref cursor because you can
-- use oci_bind_array_by_name() on each parameter.
create or replace procedure mywrapper2(pempno out dbms_sql.NUMBER_table, pename out dbms_sql.VARCHAR2_table) as
data mytabletype;
begin
mycreatedata1(data);
select myid, mydata
bulk collect into pempno, pename
from table(cast(data as mytabletype));
end mywrapper2;
show errorsThen in PHP you could do:
// Use a Ref Cursor
$s = oci_parse($c, "begin mywrapper1(:myid); end;");
$rc = oci_new_cursor($c);
oci_bind_by_name($s, ':myid', $rc, -1, OCI_B_CURSOR);
oci_execute($s);
oci_execute($rc);
oci_fetch_all($rc, $res);
var_dump($res);
// Use Collections
$s = oci_parse($c, "begin mywrapper2(:myid, :mydata); end;");
oci_bind_array_by_name($s, ":myid", $myid, 10, -1, SQLT_INT);
oci_bind_array_by_name($s, ":mydata", $mydata, 10, 20, SQLT_CHR);
oci_execute($s);
var_dump($myid);
var_dump($mydata); -
Confused: Returning Simple User Defined Type (non-built-in)
Hi, hope you can straighten out a confused newbie! This is probably laughingly simple if you know how...
I just want my weblogic workshop web service to return an ordinary record-style object to my static client. I'm not sure what to do, I've already tried a few approaches...
If I use two services deployed on Weblogic Server everything works great. Weblogic server must handle the seriali/deseriali - zation for you.
So I tried to use the java proxy downloaded from the test page, but it doesn't contain all the classes needed.
I read the Weblogic help files which said to use autotype, which compiles but gives class cast exceptions running. I tried both automatic and manual with same error. Trying to import to Workshop gave me a "no handler defined error".
And I bought a book from Amazon about J2EE and Weblogic but it does not include a section on user defined types!
Am I supposed to use XMLBeans or something??? Please help!
Regards, Ry.> but the requirement is not allowing me to do either with ref cursor or with
returning clause. Because, in .Net development area , we are restricted for
using Returning clause.
The following is a Bad Idea (tm) where PL/SQL is used to "return data" to the caller, be that via PL/SQL record types or collection types..Net ---[calls]-------> PL/SQL
PL/SQL ---[calls]-------> SQL
PL/SQL <--[data]--------- SQL
PL/SQL [buffers] data
.Net <--[buffer data]-- PL/SQLWhy?
Because PL/SQL is a poor choice for a buffer as the db cache buffer used by the SQL engine is a very advance and sophisticated cache and core to the Oracle RDBMS.
Ain't no way you can do that better in PL/SQL than SQL.
What is the typical client-server approach in Oracle?.Net ---[calls]-------> PL/SQL
PL/SQL [constructs ref cursor]
.Net <--[ref cursor]-- PL/SQL
.Net --[fetches]----> SQL [using ref cursor]A ref cursor is a pointer the "compiled and executable SQL program" in Oracle that PL/SQL constructed for .Net in this case. Each FETCH call using the ref cursor pointer, executes the cursor "program" and returns the next row (or set of rows when using bulk processing) to the client. -
How to use user-defined packages in JAX-RPC web service
I am trying to use Object of my class located in my package in jax-rpc webservice,the code is
package supercomputer;
import Hello.*;
public class SuperImpl implements SuperIF
public String sendParam(String data)
Temp ob=new Temp();
int i=ob.get1(10000);
return data+"returned by supercomputer";
Temp is located in Hello package,I have jar the Hello package as Hello.jar and has set its classpath in targets.xml of Ant tool.
The code compiles well and service is deployed successfully,but when i try to call the service from the client its gives me following error.
[echo] Running the supercomputer.SuperClient program....
[java] java.rmi.ServerException: Missing port information
[java] at com.sun.xml.rpc.client.StreamingSender._raiseFault(StreamingSender.java:357)
[java] at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:228)
[java] at supercomputer.SuperIF_Stub.sendParam(SuperIF_Stub.java:60)
[java] at supercomputer.SuperClient.main(Unknown Source)
I dont know if it deploys why it gives error on client side.
Please tell how to use user-defined packages and class in jax-rpc service code ,i am not talking about passing user-defined parameters i am just talking about making objects of user defined classes in jax-rpc service.I think there is some problem in classpath.
Please guide me in doing that.
Thanks,
FarrukhFarrukh,
I don't know if your error is about a missing class from your custom package, ... what track did you followed to say that?
To use your package in the implementation of you web service, you should only follow the rules of making a web application: put your package jar in your \lib directory inside WEB-INF/ or your package classes unjared in classes (also in WEB-INF/).
As I already said, I have doubts that your error should be originated from a missing class from your package, but:
-try to see the logs (errors?) when you deploy your web service that could give a hint about the problem.
-try to see if you can access your endpoint through your browser to see if there is a online status
-display your config/WSDL file, and the steps you did to build your web service.
regards,
Pedro Salazar. -
Guys i am using Entity Framework 5 code first (I am not using edmx) with Oracle and all works good, Now i am trying to get data from stored procedure which is under package but stored procedure have out param which is user define type, Now my question is
how i will call stored procedure from entity framework
Thanks in advance.I agree with you, but issue is we have lots of existing store procedure, which we need to call where damn required. I am sure those will be few but still i need to find out.
If you think you are going to get existing MS Stored Procedures or Oracle Packages that had nothing to do with the ORM previously to work that are not geared to do simple CRUD operations with the ORM and the database tables, you have a rude awakening
coming that's for sure. You had better look into using ADO.NET and Oracle Command objects and call those Oracle Packages by those means and use a datareader.
You could use the EF backdoor, call Oracle Command object and use the Packages, if that's even possible, just like you can use MS SQL Server Stored Procedures or in-line T-SQL via the EF backdoor.
That's about your best shot.
http://blogs.msdn.com/b/alexj/archive/2009/11/07/tip-41-how-to-execute-t-sql-directly-against-the-database.aspx
Maybe you are looking for
-
How do I snyc my iPad to my Mac Mini?
I am new to Mac and want to know if I snyc my iPad with my Mac Mini like I had to do with my PC.
-
Fed up, over it, and done
Well it looks like I have been reduced to the level of taking to a public forum to put this PATHETIC company on blast seeing as how customer service in stores, on the phone, and even contacting the better business bureau wasn't able to solve anything
-
Is AVI Assembling possible with Final Cut Pro?
Hi everyone, Please forgive my ignorance...I'm a complete newbee regarding Final Cut Pro's capabilities. I'm trying to find software that can assemble multiple AVI, OGM and MKV Video files. I'd like to be able to cut each video file into chapters and
-
Red logo is pixelated and the color is different
Ive been trying to render a video for a while and cant seem to solve my problem. Im working with a very special filesize: 300x250. On my timeline,I have my video (which I edited in Premiere and then Imported in AfterEffects) and a top layer which is
-
Hi All, I have successfully installed first four CD's of Sun Solaris 10 in VMware and skipped the 5th CD at the time of installation bt now i want to install the 5th CD also. Can some help me ? Thanks .... Prince Wadhawan