Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to create IF within TEXT TO
Message
 
 
À
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:
01585168
Vues:
52
>
>>>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
Thank you very much. I will try your suggestion.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform