|
Sorry,
Actually it needs to be like this:
BEGIN
declare tempvar varchar(50);
DECLARE C1 CURSOR WITH RETURN FOR SELECT MAX ( BOX ) AS RETURNED FROM
CLSDFILES . CLOSEDFILES WHERE BOX LIKE tempvar;
set tempvar = '%' + criteria + '%';
OPEN C1 ;
END ;
Charles Wilt
--
iSeries Systems Administrator / Developer
Mitsubishi Electric Automotive America
ph: 513-573-4343
fax: 513-398-1121
> -----Original Message-----
> From: midrange-l-bounces@xxxxxxxxxxxx
> [mailto:midrange-l-bounces@xxxxxxxxxxxx]On Behalf Of Adam Lang
> Sent: Tuesday, June 07, 2005 11:10 AM
> To: Midrange Systems Technical Discussion
> Subject: Stored Procedures, Visual Basic 6 and LIKE clause
>
>
> Hello,
>
> I have a Visual Basic 6 program using ADO and the iSeries ODBC driver
> for getting data off the iSeries (V5R2.
>
> I use a variety of stored procedures currently with no problem, until
> I tried doing a LIKE clause.
>
> The stored procedure runs, but it returns a NULL value. When I run
> the SQL in the "run scripts" window of NAvigator, it returns data,
> like it should. I went over code a lot and I can see nothign I am
> doing different from the other stored procedures I am calling. I am
> curious if anyone has any ideas.
>
> Here is the definituion of the stored procedure I am calling:
>
> CREATE PROCEDURE CLSDFILES.LAST_BOX (
> IN CRITERIA VARCHAR(50) )
> DYNAMIC RESULT SETS 1
> LANGUAGE SQL
> SPECIFIC CLSDFILES.LAST_BOX
> NOT DETERMINISTIC
> READS SQL DATA
> CALLED ON NULL INPUT
> BEGIN DECLARE C1 CURSOR WITH RETURN FOR SELECT MAX ( BOX ) AS
> RETURNED FROM CLSDFILES . CLOSEDFILES WHERE BOX LIKE '%CRITERIA%' ;
> OPEN C1 ; END ;
>
> And here is the Visual Basic code I am calling it with:
>
> Set MyCommand = New ADODB.Command
>
> With MyCommand
> .ActiveConnection = MyConnection
> .CommandText = "CLSDFILES.LAST_BOX"
> .CommandType = adCmdStoredProc
> .Parameters("criteria") = criteria
> End With
>
> Set rcdset = New ADODB.Recordset
> With rcdset
> .CursorType = adOpenStatic
> .LockType = adLockReadOnly
> Set .Source = MyCommand
> .Open
> End With
>
> If IsNull(rcdset.Fields.Item(0).Value) Then
> MsgBox "No boxes with that search criteria."
> Else
> MsgBox rcdset.Fields.Item(0).Value
> End If
>
> Also of note. When I call the SQL directly from VB, it also works
> that it is supposed to:
> 'sSQL = "SELECT max(BOX) FROM CLSDFILES . CLOSEDFILES WHERE BOX LIKE
> '%" & criteria & "%'"
> '
> 'Set rcdset = MyConnection.Execute(sSQL)
> '
> 'If IsNull(rcdset.Fields.Item(0).Value) Then
> ' MsgBox "No boxes with that search criteria."
> 'Else
> ' MsgBox rcdset.Fields.Item(0).Value
> 'End If
> --
> "Your Majesty has slain the mother; how can one kill the
> child as well?"
> - Ts'ao Jui, Romance of the Three Kingdoms
>
> --
> This is the Midrange Systems Technical Discussion
> (MIDRANGE-L) mailing list
> To post a message email: MIDRANGE-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/midrange-l
> or email: MIDRANGE-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/midrange-l.
>
>
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.