Robert, For 40 years I wanted to write this routine – your post inspired me to try something today.
WARNING: Before executing the routine below be sure to make a backup of your database. You may also want to run it offline as a test before updating the “working” copy of your data. Fair warning … 😊 It seems to work very well on “stand alone” columns – that is, columns that are not indexed, not in computed columns, not used in constraints, etc. If you have a simple TEXT column that needs to be expanded this routine might do the trick. Steve Sweeney San Ramon, CA -- ExpandTextColWidth.RMD -- NOTE: This is a rather simple routine that will EXPAND the size of TEXT "stand alone" columns -- NOTE: Be sure there are no CONSTRAINTS or COMPUTED COLUMNS or INDEXES as these types of columns may require manual changes -- Find the TEXT columns that are used in multiple tables --SELECT SYS_COLUMN_NAME=50,COUNT(*)=19 AS Number_of_Instances FROM SYS_COLUMNS WHERE SYS_TYPE_NAME = 'TEXT' GROUP BY SYS_COLUMN_NAME HAVING COUNT(*) > 1 -- Columns will be temporarily renamed as the ALTER TABLE statement expands the size SET V vSYS_COLUMN_PREFIX TEXT = 'Unique123Prefix456' -- Enter the COLUMN NAME you want to expand SET V vSYS_COLUMN_NAME TEXT = 'CageNum' -- This concatonates the "Prefix" with the "Column Name" to create a temporary column name SET V vtmp_COLUMN_NAME TEXT = (.vSYS_COLUMN_PREFIX + .vSYS_COLUMN_NAME) -- Here is the NEW column width SET V vSYS_COLUMN_LENGTH INTEGER = 48 -- Initialize a variable for the TABLE NAME SET V vSYS_TABLE_NAME TEXT = NULL -- Cursor to go through each instance of a TableName / ColumnName DECLARE cColNameCursor CURSOR FOR SELECT syst.SYS_TABLE_NAME,sysc.SYS_COLUMN_NAME FROM SYS_COLUMNS sysc , SYS_TABLES syst WHERE sysc.SYS_COLUMN_NAME = .vSYS_COLUMN_NAME AND sysc.SYS_TABLE_ID = syst.SYS_TABLE_ID OPEN cColNameCursor FETCH cColNameCursor INTO vSYS_TABLE_NAME,vSYS_COLUMN_NAME WHILE SQLCODE <> 100 THEN WRITE 'Table:' .vSYS_TABLE_NAME , 'Column:' .vSYS_COLUMN_NAME ALTER TABLE &vSYS_TABLE_NAME ALTER COLUMN &vSYS_COLUMN_NAME TO &vtmp_COLUMN_NAME TEXT &vSYS_COLUMN_LENGTH WRITE ' ' FETCH cColNameCursor INTO vSYS_TABLE_NAME,vSYS_COLUMN_NAME ENDWHILE -- Drop the cursor after execution DROP CURSOR cColNameCursor -- Rename the "TemporaryColumn" back to the "OriginalColumn" RENAME COLUMN &vtmp_COLUMN_NAME TO &vSYS_COLUMN_NAME RETURN From: [email protected] <[email protected]> On Behalf Of Bruce Chitiea Sent: Tuesday, January 21, 2025 3:57 PM To: [email protected] Subject: Re: [RBASE-L] - Column definition Robert: The fastest, simplest way to do it is to do an UNLOAD ALL to a text file, then modify the column definitions in the text file OUTPUT utility_changeColumnWidth.rmd UNLOAD ALL OUTPUT SCREEN RBEDIT utility_changeColumnWidth.rmd ... make all your changes, save, and then: 1) Change the extensions of your existing .rx? file e.g: database.rx1.old ... .rx4.old 2) RUN utility_changeColumnWidth.rmd Done, and, you end up with a free backup of your database. Best, Bruce Bruce A. Chitiea SafeSectors, Inc. 1142 S Diamond Bar Blvd # 442 Diamond Bar CA 91765-2203 [email protected]<mailto:[email protected]> (909) 238-9012 m ------ Original Message ------ >From "'Robert Thompson' via RBASE-L" ><[email protected]<mailto:[email protected]>> To [email protected]<mailto:[email protected]> Date 1/21/2025 3:48:51 PM Subject [RBASE-L] - Column definition I have "Column A" defined as TEXT 12 in about 20 tables. I now need to expand that to TEXT 25. I know how to manually make the changes and it is not very efficient, so I thought I would ask if there is an option or process that I may have missed in some update over the years! So.... is there a straight forward way of changing a column text length definition across the database? Thanks, -- Robert Thompson TTC. Inc. -- 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 visit https://groups.google.com/d/msgid/rbase-l/ef51c380-731b-4e0e-8b2e-886327601e4f%40comcast.net<https://groups.google.com/d/msgid/rbase-l/ef51c380-731b-4e0e-8b2e-886327601e4f%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 visit https://groups.google.com/d/msgid/rbase-l/em71657adc-3f99-4299-887e-1a6e606134d2%40828a53f2.com<https://groups.google.com/d/msgid/rbase-l/em71657adc-3f99-4299-887e-1a6e606134d2%40828a53f2.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]. To view this discussion visit https://groups.google.com/d/msgid/rbase-l/SN6PR03MB37271D896A55C3B8B118472889E12%40SN6PR03MB3727.namprd03.prod.outlook.com.

