Jim,

  I have a faint memory of the error message being around since the 4.5++
days.  It is likely because of the assignment '=' operator, which is not
present when SELECT is used.

  It isn't a deal breaker for me, but you could conjure up an example based
on RRBYW14 and submit to RBTI for their consensus...

Mike

> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of James
> Bentley
> Sent: Friday, March 28, 2014 12:57 PM
> To: RBASE-L Mailing List
> Subject: [RBASE-L] - Re: Store procedure question
> 
> Mike
> Thanks. I had considered that alternative but I believe there may be a
> glitch in the syntax editor as I should not have to code two lines
> since the following works in a select statement:
> SELECT (SRPL(&FxTXHqColumn,CHAR(44),NULL,0))=40  FROM  &FxTXHqTable
> WHERE &FxTXHqColumn CONTAINS CHAR(44)
> 
> Here is the results of executing that statement:
>   (SRPL(TXHqLastName,CHAR(44),NULL,0))
>  ----------------------------------------
>   Gutierrez
> 
> 
> Note! The SRPL statement is exactly the same as in my UPDATE
> 
> statement. Why does it work in one case and not the other?
> I have decided to open a problem with RDCC.
> 
> 
> Jim Bentley,
> American Celiac Society
> 1-504-737-3293
> 
> 
> 
> ________________________________
> 
> From: MikeB <[email protected]>
> To: RBASE-L Mailing List <[email protected]>
> Sent: Thursday, March 27, 2014 10:50 PM
> Subject: [RBASE-L] - Re: Store procedure question
> 
> 
> James,
>   I got it to work [using my own data] with the following construct:
> 
> SET VAR vTableName TEXT = 'vehicle'
> SET VAR vcolname TEXT = 'vehmfr'
> set var vSrpl = +
> ('(SRPL(' + .vColName + ',' + '''ford''' +  ',' +'''fordTwo''' +  ','
> +'0))')
> 
> UPDATE &vTableName SET &vcolname = &vsrpl WHERE &vcolname CONTAINS
> 'for'
> 
> RETURN
> 
> > -----Original Message-----
> > From: [email protected] [mailto:[email protected]] On Behalf Of James
> > Bentley
> > Sent: Thursday, March 27, 2014 10:16 PM
> > To: RBASE-L Mailing List
> > Subject: [RBASE-L] - Re: Store procedure question
> >
> > Mike,
> > Here is what I am attempting to do:
> > fxtxhqcolumn      = TXHqLastName                            TEXT
> > FxTXHqTable        = TXHqBetaXi                              TEXT
> >  The table name and column name are passed as parameters to stored
> > procedures See above values.
> >
> > If I execute the following command:
> > select &FxTXHqColumn FROM  &FxTXHqTable WHERE &FxTXHqColumn CONTAINS
> > CHAR(44)
> >  TXHqLastName
> >  --------------------
> >  Gutierrez,
> >  Donelon,
> >  Heard,
> >  Orr,
> >  Tolivar,
> >  Spreen,
> >  Palermo,
> >  Jeandron,
> >  Blackledge,
> >  Cradic,
> >  Cangelosi,
> >  Neupert,
> >  Blackman,
> >  Allen,
> >  Pecoraro,
> >  Vilcan,
> >  Whittaker,
> >  Magner,
> >
> > We get a list of  TXHqLastName  that contain a comma.
> >
> > If I enter the following command:
> > select (SRPL(&FxTXHqColumn,CHAR(44),NULL,0))=40  FROM  &FxTXHqTable
> > WHERE &FxTXHqColumn CONTAINS CHAR(44)
> >  (SRPL(TXHqLastName,CHAR(44),NULL,0))
> >  ----------------------------------------
> >  Gutierrez
> >  Donelon
> >  Heard
> >  Orr
> >  Tolivar
> >  Spreen
> >  Palermo
> >  Jeandron
> >  Blackledge
> >  Cradic
> >  Cangelosi
> >  Neupert
> >  Blackman
> >  Allen
> >  Pecoraro
> >  Vilcan
> >  Whittaker
> >  Magner
> >
> > notice that the comma has been removed. the &FxTXHqColumn is required
> > to provide the actual column name.
> >
> > If I execute the following command I get the indicated results.
> >
> > UPDATE &FxTXHqTable SET &FxTXHqColumn = (SRPL(
> > &FxTXHqColumn,CHAR(46),NULL,0)) WHERE &FxTXHqColumn  CONTAINS
> CHAR(46)
> > -ERROR- A left parenthesis cannot be followed by a binary operator
> > (2145)
> >
> > what is intended is for RBase to translate the statement into:
> > UPDATE TXHqBetaXi SET
> TXHqLastName=(SRPL(TXHqLastName,CHAR(44),NULL,0))
> > WHERE TXHqLastName
> >
> > CONTAINS CHAR(46)
> >
> >
> > CHAR(46) IS AN ASCII COMMA
> >
> > Instead I get the above error message.
> >
> >
> > Jim Bentley,
> > American Celiac Society
> > 1-504-737-3293
> >
> >
> >
> > ________________________________
> >
> > From: MikeB <[email protected]>
> > To: RBASE-L Mailing List <[email protected]>
> > Sent: Thursday, March 27, 2014 5:07 PM
> > Subject: [RBASE-L] - Re: Store procedure question
> >
> >
> > Why would you use an ampersand var inside of the function?
> >
> > In that context the variable is a VALUE and not a part of a command
> to
> > be
> > parsed.
> >
> > > -----Original Message-----
> > > From: [email protected] [mailto:[email protected]] On Behalf Of
> Bill
> > > Downall
> > > Sent: Thursday, March 27, 2014 4:59 PM
> > > To: RBASE-L Mailing List
> > > Subject: [RBASE-L] - Re: Store procedure question
> > >
> > > Jim,
> > >
> > > Since your Macro variable &FxTXHqColumn is enclosed within
> > parentheses
> > > and is therefore part of an "expression", you have probably
> confused
> > > the parser into not substituting the macro variable soon enough.
> > >
> > > Just for giggles, see what happens if you put a space between the
> > > parenthesis and the ampersand.
> > >
> > > I would also put CHAR(46) into parens, because that syntax could
> also
> > > stymie a parser. Or better yet, put it in a variable.
> > >
> > > SET VAR vDot = (CHAR(46))
> > >
> > > UPDATE &FxTXHqTable SET  +
> > >
> > > &FxTXHqColumn = (SRPL( &FxTXHqColumn, .vDot, NULL, 0)) + WHERE
> > > &FxTXHqColumn CONTAINS .vDot)
> > >
> > >
> > >
> > > If that doesn't help, let us know, and we'll escalate.
> > >
> > > Bill
> > >
> > >
> > > On Thu, Mar 27, 2014 at 4:29 PM, James Bentley
> > > <[email protected]> wrote:
> > >
> > >
> > >    I am trying to modify one of my stored procedure to be more
> > > generalized.
> > >    The following is a part of the code
> > >    SET VAR FxTXHqTable=(.FxTXHqTableName)
> > >    SET VAR FxTXHqColumn=(.FxTXHqColName)
> > >    -- Remove period, comma and double space
> > >    UPDATE &FxTXHqTable SET
> > > &FxTXHqColumn=(SRPL(&FxTXHqColumn,CHAR(46),NULL,0)) WHERE
> > &FxTXHqColumn
> > > CONTAINS CHAR(46)
> > >    UPDATE &FxTXHqTable SET
> > > &FxTXHqColumn=(SRPL(&FxTXHqColumn,CHAR(44),NULL,0)) WHERE
> > &FxTXHqColumn
> > > CONTAINS CHAR(44)
> > >    UPDATE &FxTXHqTable SET &FxTXHqColumn=(SRPL(&FxTXHqColumn,'
> > > ',CHAR(32),0))
> > >
> > >
> > >    The stored-procedure has two arguments FxTXHqTableName TEXT (18)
> > > AND FxTXHqColName TEXT (18)
> > >    They represent a tablename and a column name.
> > >    The error message given is that left parenthesis can not be
> > > followed by '&'
> > >    this part of the syntax "(SRPL(&FxTXHqColumn" seems to be the
> > > problem
> > >    it works if I substitute the actual table name for example
> > > "MbrCurHMainAdrLine" which
> > >    is the value I am passing to the stored procedure. note the
> other
> > > parts of
> > >
> > >    the abatement with the "&"  worked fine.
> > >
> > >    The are some 50 lines of UPDATE commands in the procedure.
> > >
> > >    Does any one have any suggestions as to how I can fix this
> > > problem.
> > >
> > >    setting up the complete line and into a variable the esecuting
> > > the variable seems
> > >    to defeat the purpose of generalizing the stored procedure.
> > >
> > >
> > >    Jim Bentley,
> > >    American Celiac Society
> > >    1-504-737-3293
> > >
> > >
> > >
> >
> >
> >
> >
> 
> 
> 
> 


Reply via email to