Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to create IF within TEXT TO
Message
From
10/10/2013 05:15:26
Dragan Nedeljkovich (Online)
Now officially retired
Zrenjanin, Serbia
 
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01585143
Message ID:
01585166
Views:
64
>>>TEXT TO cSqlCommand TEXTMERGE NOSHOW
>>>	IF NOT exists (select COLUMN_NAME from INFORMATION_SCHEMA.columns where table_name = '<<tcTableName>>' and column_name = '<<tcFieldName>>' ) 
>>>		BEGIN
>>>			alter table <<tcTableName>> add <<tcFieldName>> <<tcFieldType>> not null default <<tuDefault>>
>>>			CREATE NONCLUSTERED INDEX <<tcIndexTag>> ON [dbo].[<<tcTableName>>] ([<<tcFieldName>>])
>>>	        SELECT CAST(1 AS bit) AS col_added
>>>	    END    
>>>	ELSE 
>>>		SELECT CAST(0 AS bit) AS col_added
>>>ENDTEXT
>>>
>>>
>>>But above I want the line CREATE NONCLUSTERED INDEX .. to be in the resulting cSqlCommand if the value tcIndexTag is not empty.
>>>
>>>How do I do it?
>>>
>>
>>
>><<iif(!empty(tcIndexTag),[CREATE NONCLUSTERED INDEX ]+tcIndexTag,[])>>
>>
>
>Thank you. I didn't know I could have nested
<< and >>
. I will try this approach.

You can't really nest merge brackets, because the parser will match the first opening one with the first closing one, and will then ignore (or be confused with) the unmatched one between them.

What I usually do when composing SQL is to create bits and pieces separately... IOW, something like this:
if empty(tcIndexTag)
   lcIndexClause=""
else
   lcIndexClause=textmerge("CREATE NONCLUSTERED INDEX <<tcIndexTag>> ON [dbo].[<<tcTableName>>] ([<<tcFieldName>>])")
endif
TEXT TO cSqlCommand TEXTMERGE NOSHOW
	IF NOT exists (select COLUMN_NAME from INFORMATION_SCHEMA.columns where table_name = '<<tcTableName>>' and column_name = '<<tcFieldName>>' ) 
		BEGIN
			alter table <<tcTableName>> add <<tcFieldName>> <<tcFieldType>> not null 
			default <<tuDefault>> <<lcIndexClause>>
	        SELECT CAST(1 AS bit) AS col_added
	    END    
	ELSE 
		SELECT CAST(0 AS bit) AS col_added
ENDTEXT

back to same old

the first online autobiography, unfinished by design
What, me reckless? I'm full of recks!
Balkans, eh? Count them.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform