Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to create IF within TEXT TO
Message
De
10/10/2013 05:15:26
Dragan Nedeljkovich (En ligne)
Now officially retired
Zrenjanin, Serbia
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01585143
Message ID:
01585166
Vues:
63
>>>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.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform