[Lazarus] SQLdb not able to retrieve data from stored procedures?

Dimitrios Chr. Ioannidis dioannidis at artesoft.gr
Thu Jan 20 12:18:46 CET 2011


Στις 20/1/2011 12:38 μμ, ο/η michael.vancanneyt at wisa.be έγραψε:
>
>
> On Thu, 20 Jan 2011, Bo Berglund wrote:
>
>> On Thu, 20 Jan 2011 09:31:44 +0100 (CET), michael.vancanneyt at wisa.be
>> wrote:
>>
>>>
>>>
>>> On Wed, 19 Jan 2011, Bo Berglund wrote:
>>>
>>>> I am investigating Lazarus' capabilities for database work so I have
>>>> made a very simple test application using ODBC and the SQLdb
>>>> components.
>>>> I am doing this on a Windows XP platform.
>>>>
>>>> The code is a very slightly modified example that I got from the WIKI
>>>> here:
>>>> http://wiki.lazarus.freepascal.org/Lazarus_Database_Tutorial#Lazarus_and_MSSQL 
>>>>
>>>>
>>>> My problem is that I get an exception on the query.Open line when the
>>>> SQL text is something like this:
>>>>
>>>> 'EXEC SelectSomeData @Parameter=1234'
>>>
>>> Hm. Weird MS syntax.
>>
>> Not really, this is standard syntax for calling a stored procedure
>> with a parameter value. I simplified the call for this post to have
>> only one parameter and gave it a valid name, which is not the actual
>> name...
>>
>>> Why could they not use SELECT * FROM SelectSomeData(1234) like 
>>> everyone else ?
>>
>> Because the SelectSomeData is not a table, it is a stored procedure
>> and must be called with the EXEC verb.
>
> I understand that SelectSomeData is not a table.
>
> But in other engines "SELECT * FROM SelectSomeData(1234)" does work on 
> a stored procedure.
> I assumed it was standard.


Bo, one trick you can use is :

"SELECT * FROM OPENROWSET('SQLOLEDB', 'SERVER=(LOCAL);TRUSTED 
CONNECTION=YES;','SET FMTONLY OFF EXEC MASTER.DBO.SelectSomeData"

but because under SQL Server 2005, Ad Hoc Distributed Queries must be 
replaced all sp under MS SQL with User Defined Functions, which return a 
RowSet and can be used in
the SQL statements.

regards,

-- 
Dimitrios Chr. Ioannidis






More information about the Lazarus mailing list