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 > > > > > > > > > > > > > > > > > > > > >

