Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Create Temp Table in Sql Server
Message
De
13/11/2014 11:28:10
 
 
À
12/11/2014 18:36:11
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
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:
01610894
Message ID:
01610921
Vues:
52
>We're trying to create temporary tables in MsSql that can be used in later queries and have come up with something strange.
>TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 15
>  SELECT fieldlist
>    INTO #temp1
>    FROM table JOIN table ON condition
>         etc
>    WHERE datefield BETWEEN <<date1>> AND <<date2>>
>ENDTEXT
>
>?SQLEXEC(nHandle,lcSql)
>
>This returns 1.
>
>TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 15
>  SELECT fieldlist
>    INTO #temp2
>    FROM #temp1 JOIN table ON condition
>         etc
>    WHERE datefield BETWEEN <<date1>> AND <<date2>>
>ENDTEXT
>
>?SQLEXEC(nHandle,lcSql)
>
>This generates an error that #temp1 doesn't exist.
>
>It works if I change the query so that it creates ##Temp1
>
>I've only seen this happen when there are Date fields in the WHERE clause.
>
>I tried hard coding date values and got the same problem. I also tried using ? instead of the angle brackets without
>getting a better result.
>
>We're puzzled about why the extra # makes such a difference and any information you can provide
>will be a big help.
>
>Thanks.............Rich


In reading the responses I think I wasn't clear enough in my explanation.

I'm pretty sure I know the difference between the # and ## for the temp table name.
(# is available only to the connection which created it
## is available to any active connection
both are removed when the connection which created it is disconnected.)


The wierd thing (from our perspective) is that the single # works when we don't have any date comparisons in the WHERE clause. We've only seen this issue when selecting based on a date value. It doesn't seem to matter if we use textmerge, parameters, BETWEEN rather than < =, > =

Just having the date value seems to mean # doesn't work but ## does.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform