From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: =?UTF-8?Q?Bj=c3=b6rn_Lundin?= Newsgroups: comp.lang.ada Subject: Re: converting pointer to value Date: Fri, 5 Mar 2021 09:58:10 +0100 Organization: A noiseless patient Spider Message-ID: References: <02709d96-50fe-4e87-bdb5-4f430fa2717an@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 5 Mar 2021 08:58:10 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="c9e3b2236f724ff4b8eeba0adbb7f865"; logging-data="10193"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+bkoTyn7k6M2KIchVrGugp" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 Cancel-Lock: sha1:Y8/E5ixKoWZXO/u2WsSGdfPv2Wo= In-Reply-To: Content-Language: sv Xref: reader02.eternal-september.org comp.lang.ada:61479 List-Id: Den 2021-03-04 kl. 22:27, skrev Dmitry A. Kazakov: > On 2021-03-04 20:38, Shark8 wrote: >> On Thursday, March 4, 2021 at 10:35:01 AM UTC-7, Dmitry A. Kazakov wrote: >>> On 2021-03-04 17:55, Shark8 wrote: >>> >>>>> type SQLPOINTER is private; >>>> .... >>>>> private >>>>> type SQLPOINTER is new System.Storage_Elements.Integer_Address; >>>> >>>> And here we have SQLPOINTER, which is private, but which is >>>> something of the same representation that Integer_Address has; let's >>>> assume that the ADDRESS type is implementation-defined, and a >>>> private type. >>> SQLPOINTER is System.Address. >> >> Which is implementation-defined. > > No, it defined this way > >    typedef void * SQLPOINTER; > > so for all purposes it is System.Address. > >> None of that addresses the issue that he asked: "how to get the Pvalue >> as an SQLRETURN?" > > OK, then the answer is you don't. > > As the rule QDBC does not overlay different types. There are special > pointer values though, like 1 etc. Integer_Address can be used to encode > them. They are constants. > > P.S. I think the OP refers to SQLParamData/SQLPutData mechanism. There Yes - I am. But the problem at hand was more of Ada nature than handling tha ODBC API (eventhough yuo've started med thinking about if I'm doing it the right way) > is no overloading either. It works this way: > >    prepare >    bind to special "address" value, 1, I believe > >    execute >    if SQLParamData = need_data then >       loop >          SQLPutData (next chunk) >       end loop; >    end if; > > I do not think it is worth using, unless the data are so big that they > are not in the memory, or read from a stream chunk by chunk etc. Clearly > it is a very expensive method. A normal bind would be a better choice > for most applications. Yes. The use case at hand is with data fitting into RAM. But that might change - hence the PutData way. But I will reconsider, and contemplate if I really need that. -- Björn