Re: [Orclib-users] Simple insert with in variables to procedure
Open source C and C++ library for accessing Oracle Databases
Brought to you by:
vince_del_paris
|
From: vincent r. <vin...@gm...> - 2015-01-13 22:46:55
|
Btw, version 4.0.1 released :)
On Tue, Jan 13, 2015 at 10:53 PM, vincent rogier <vin...@gm...>
wrote:
> you can create a procedure that takes an collection (PL/SQL table, VARRAY
> or nested tables) as input parameter.
> In the app code, you can use a collection<T> and bind it to the statement.
> check the C++ main demo app and the collection cpp demo
> As well you can refer to the C documentation - section Collection for more
> information
>
> On Tue, Jan 13, 2015 at 10:47 PM, Miguel Vaz <pag...@gm...> wrote:
>
>> Yes, i understand the impossibility of sending a class, what i meant was
>> send bulk rows of data in one go.
>>
>> Dont worry. Get that realeas done. And thanks. :-)
>>
>> best regards,
>> MV
>>
>> On Tue, Jan 13, 2015 at 9:37 PM, vincent rogier <vin...@gm...>
>> wrote:
>>
>>> I'm currently finishing creating release packages for v4.0.1.
>>> They will be online wihtin the next hour.
>>>
>>> You cannot send a C++ class to an oracle procedure.
>>>
>>> Regards,
>>>
>>> Vincent
>>>
>>> On Tue, Jan 13, 2015 at 10:34 PM, Miguel Vaz <pag...@gm...>
>>> wrote:
>>>
>>>> Hi Vincent,
>>>>
>>>> Thats perfectly ok. Just glad you know what the problem is. I did spend
>>>> the whole afternoon cursing over my code and lack of skills, hehe. :-)
>>>>
>>>> On a different note, how can i send a simple class over to an oracle
>>>> procedure?
>>>>
>>>> Something like:
>>>>
>>>> class person{
>>>> string nome;
>>>> int id;
>>>> }
>>>>
>>>> on the oracle side somethign like:
>>>>
>>>> create ...
>>>> procedure_name(indata IN cursor){
>>>>
>>>>
>>>> }
>>>>
>>>> Any pointer on this is great help.
>>>>
>>>> Again, no worries about the bug. :-)
>>>>
>>>> best regards,
>>>> MV
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Jan 13, 2015 at 6:40 PM, vincent rogier <vin...@gm...
>>>> > wrote:
>>>>
>>>>> Hi Miguel,
>>>>>
>>>>> I apologize as there is an issue with binding string in the released
>>>>> header files.
>>>>>
>>>>> I'm going to release an version 4.0.1 with some fixes for both C and
>>>>> C++ APIs this week.
>>>>>
>>>>> Regarding your issue, while waiting for the new packages, you can fix
>>>>> it quickly by making the following simple modification :
>>>>>
>>>>> * in the file ocilib_impl.hpp, line 3860 (BindAdaptor template class
>>>>> constructor)
>>>>> * replace _size by size
>>>>>
>>>>> and it should work again :)
>>>>>
>>>>> Sorry for the inconvenience !
>>>>>
>>>>> Regards,
>>>>>
>>>>> Vincent
>>>>>
>>>>>
>>>>> On Tue, Jan 13, 2015 at 6:15 PM, Miguel Vaz <pag...@gm...>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>> I cant a simple insert to work using a procedure and ocilib.
>>>>>>
>>>>>> The procedure:
>>>>>>
>>>>>> CREATE OR REPLACE
>>>>>> PROCEDURE criasistema(idout OUT NUMBER, nm IN VARCHAR2) AS
>>>>>> BEGIN
>>>>>> insert into sistemas(NOME) values(nm) returning id_sistema into idout;
>>>>>>
>>>>>> END;
>>>>>>
>>>>>>
>>>>>> Heres the c++ code:
>>>>>>
>>>>>> Environment::Initialize(Environment::Default | Environment::Threaded);
>>>>>> string sql = "declare ids NUMBER begin criasistema(:ids,:nm); end;";
>>>>>>
>>>>>> try{
>>>>>> con.Open(connectString, user, passw);
>>>>>> Statement st(con);
>>>>>> Statement st2(con);
>>>>>> st.Prepare(sql);
>>>>>> st.Bind(":ids", st2, BindInfo::Out);
>>>>>> st.Bind(":nm", nome, 255, BindInfo::In);
>>>>>> st.Execute();
>>>>>>
>>>>>> con.Commit();
>>>>>> con.Close();
>>>>>>
>>>>>> }
>>>>>> catch (Exception &ex){
>>>>>> cout << ex.what() << endl;
>>>>>> }
>>>>>>
>>>>>> Environment::Cleanup();
>>>>>>
>>>>>> It compiles but breaks at st.Bind(":nm", nome, 255, BindInfo::In);
>>>>>> What am i doing wrong?
>>>>>>
>>>>>> I assumed it would be simply a matter of binding in and out variables
>>>>>> and it shuld work, but not so easy.. :-P
>>>>>>
>>>>>> I am really not at easy with the binds. Next step will be to send a
>>>>>> full object (int,string,...) array, but if i cant solve this simple string
>>>>>> issue, i am not going anywahere.
>>>>>>
>>>>>> Thanks.
>>>>>> MV
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
>>>>>> GigeNET is offering a free month of service with a new server in
>>>>>> Ashburn.
>>>>>> Choose from 2 high performing configs, both with 100TB of bandwidth.
>>>>>> Higher redundancy.Lower latency.Increased capacity.Completely
>>>>>> compliant.
>>>>>> http://p.sf.net/sfu/gigenet
>>>>>> _______________________________________________
>>>>>> Orclib-users mailing list
>>>>>> Orc...@li...
>>>>>> https://lists.sourceforge.net/lists/listinfo/orclib-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Vincent Rogier
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Vincent Rogier
>>>
>>
>>
>
>
> --
> Vincent Rogier
>
--
Vincent Rogier
|