Agreed. I am in the process of reviewing a program I wrote 19 years ago that 
has several levels of Cursors and I hope I can simplify it quite a bit; I have 
to go through app. 1,000 lines of code...

 

Javier,

 

Javier Valencia, PE

913-915-3137

 

 

From: [email protected] <[email protected]> On Behalf Of Buddy 
Walker
Sent: Sunday, July 4, 2021 6:09 AM
To: [email protected]
Subject: RE: [RBASE-L] - UPDATE a column WHERE a dot is missing in the end?

 

Javier

  I agree with you. I would sooner do it with one command, that’s I why I 
started out as “if all else fails”. Sometimes the declare cursor is the only 
thing that works .

 

   Happy 4th everyone

 

Buddy

 

 

From: [email protected] <mailto:[email protected]>  
<[email protected] <mailto:[email protected]> > On Behalf Of 
[email protected] <mailto:[email protected]> 
Sent: Saturday, July 3, 2021 4:29 PM
To: [email protected] <mailto:[email protected]> 
Subject: RE: [RBASE-L] - UPDATE a column WHERE a dot is missing in the end?

 

Buddy,

 

I am using SQL statements more often now where I used Cursors before. Using 
your code, you can combine getting the last character and string length to 
create the condition.

 

    SET VAR vColLength = (SLEN(.vColValue))

    SET VAR vColLastChar = (SGET(.vColValue,1,.vColLength))

 

 

UPDATE johantab SET kalla2 = (kalla2 + '.') WHERE (SGET(kalla2,1, 
(SLEN(kalla2)))) <>  ‘.’

 

*Might need to check parentheses 😊

 

Having said that, Karen’s solution:

 

UPDATE johantab SET kalla2 = (kalla2 + '.') WHERE kalla2 NOT LIKE '%.'

 

is more elegant/simpler.

 

It would be interesting to see if one runs faster than the other and I guess it 
would depend on the size of column kalla2, but with a one time update of under 
8,000 records, it is really not relevant.

 

I am currently working with a table with 170,000+ records where the process 
requires a number of updates and the process is run multiple time, so execution 
time is definitely a concern.

 

Javier,

 

Javier Valencia, PE

913-915-3137

 

 

 

From: [email protected] <mailto:[email protected]>  
<[email protected] <mailto:[email protected]> > On Behalf Of 
Buddy Walker
Sent: Saturday, July 3, 2021 1:53 PM
To: [email protected] <mailto:[email protected]> 
Subject: RE: [RBASE-L] - UPDATE a column WHERE a dot is missing in the end?

 

Bo

 

If all else fails then try looping through table with declare cursor

 

I’m assuming there could be a dot anywhere in the column but you also need one 
at the end.

 

Buddy

 

---Code Starts Here

 

  SET VAR vColValue TEXT

  SET VAR vColLength INTEGER

  SET VAR vDot = ('.')

 

  DECLARE C1 CURSOR FOR SELECT kalla2 +

    FROM SomeTable

  OPEN c1

  FETCH c1 INTO +

    vColValue INDICATOR iv1

  WHILE SQLCODE <> 100 THEN

    SET VAR vColLength = (SLEN(.vColValue))

    SET VAR vColLastChar = (SGET(.vColValue,1,.vColLength))

 

    IF vColLastChar <> .vDot THEN

      SET VAR vColValue = (.vColValue + .vDot)

      UPDATE SomeTable SET kalla2 = .vColValue WHERE CURRENT OF C1

    ENDIF

 

    SET VAR vColLength = 0

    SET VAR vColLastChar = NULL

    SET VAR vColValue = NULL

 

    FETCH c1 INTO +

      vColValue INDICATOR iv1

  ENDWHILE

  DROP CURSOR c1

  CLE VAR vColValue

 

  RETURN--Code Ends Here

 

 

 

From: [email protected] <mailto:[email protected]>  
<[email protected] <mailto:[email protected]> > On Behalf Of Bo 
Franzén
Sent: Saturday, July 3, 2021 10:43 AM
To: R:BASE <[email protected] <mailto:[email protected]> >
Subject: [RBASE-L] - UPDATE a column WHERE a dot is missing in the end?

 

Dear R:BASE!

 

I have a price database (Middle Ages) that is going to be printed in due time. 
A column, källa2, with the (often printed) source in a TEXT FORMAT often lacks 
a dot [.] in the end. How to UPDATE all rows that lack a dot? I have tried:

 

R>UPDATE johantab SET källa2 = LAST LIKE '%.' WHERE källa2 LAST NOT LIKE '%.'

-ERROR- Column källa2 must be a valid TEXT. ( 122)

 

Strange, since källa2 is a TEXT column. Operators change over time. Probably 
I'm behind. One way would be to add a dot to all rows in order to SRPL '..' 
with '.' But that did not work either:

 

R>UPDATE johantab SET källa2 = LAST LIKE '%.'

-ERROR- Column källa2 must be a valid TEXT. ( 122)

 

To UPDATE 7733 columns by hand seems like a terrible waste of time. But, as 
said, I am probably behind.

 

Bo Franzén

Department of Economic History

Stockholm University

 

R>COMPUTE ALL tran_id FROM johantab WHERE källa2 LAST NOT LIKE '%.'

tran_id            Count =           7733

                   Rows =            8008

 

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected] 
<mailto:[email protected]> .
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/28791a1702b0408da38541b47ad63903%40ekohist.su.se
 
<https://groups.google.com/d/msgid/rbase-l/28791a1702b0408da38541b47ad63903%40ekohist.su.se?utm_medium=email&utm_source=footer>
 .

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected] 
<mailto:[email protected]> .
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/002201d7703c%24a7a228d0%24f6e67a70%24%40comcast.net
 
<https://groups.google.com/d/msgid/rbase-l/002201d7703c%24a7a228d0%24f6e67a70%24%40comcast.net?utm_medium=email&utm_source=footer>
 .

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected] 
<mailto:[email protected]> .
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/!%26!AAAAAAAAAAAYAAAAAAAAAG1gU%2BA71stIig71BAFnx9iihQAAEAAAAA0VCJ/KWT5Nro6SIEyxOKwBAAAAAA%3D%3D%40vtgonline.com
 
<https://groups.google.com/d/msgid/rbase-l/!%26!AAAAAAAAAAAYAAAAAAAAAG1gU%2BA71stIig71BAFnx9iihQAAEAAAAA0VCJ/KWT5Nro6SIEyxOKwBAAAAAA%3D%3D%40vtgonline.com?utm_medium=email&utm_source=footer>
 .

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected] 
<mailto:[email protected]> .
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/001701d770c5%240ecaa9f0%242c5ffdd0%24%40comcast.net
 
<https://groups.google.com/d/msgid/rbase-l/001701d770c5%240ecaa9f0%242c5ffdd0%24%40comcast.net?utm_medium=email&utm_source=footer>
 .

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/!%26!AAAAAAAAAAAYAAAAAAAAAG1gU%2BA71stIig71BAFnx9iihQAAEAAAAB1%2BQSE47WBMoZNivDJZH/8BAAAAAA%3D%3D%40vtgonline.com.

Reply via email to