Comment puis-je obtenir SQL SELECT @variable = expression des affectations de travail comme une feuille de calcul?
Avertissement: Ceci est une "demandé-et-répond à la question" affiché conformément à la FAQ de la déclaration qu'il est "parfaitement bien de poser et de répondre à votre propre question de programmation". Son but est d'encourager les membres de la SQL Anywhere communauté de la programmation à utiliser StackOverflow par ensemencement de la "sqlanywhere" de la balise avec le réel contenu. Les modifications sont les bienvenus, comme d'autres réponses, et il a été marqué "wiki de la communauté" pour faciliter cette action, ainsi que pour éviter les plaintes de jeu le système de réputation.
Je suis en train d'écrire une procédure stockée dans SQL Anywhere 9.0.2, voici un code:
...
declare
@v_d datetime, @v_d1 datetime, @v_d2 datetime
....
select @v_d1 = @v_d, @v_d2 = dateadd(dd, 1, @v_d1)
...
il s'avère que @v_d2 ne sera pas comme prévu.
si je le modifier pour:
...
declare
@v_d datetime, @v_d1 datetime, @v_d2 datetime
....
select @v_d1 = @v_d
select @v_d2 = dateadd(dd, 1, @v_d1)
...
rien ne se passe, tout de même.
enfin, je l'ai changé pour :
...
declare
@v_d datetime, @v_d1 datetime, @v_d2 datetime
....
begin
select @v_d1 = @v_d
end
begin
select @v_d2 = dateadd(dd, 1, @v_d1)
end
...
maintenant il fonctionne très bien, a l'air assez stupide si.
ma question est: est-ce un problème connu? ou peut-être que je pourrais le faire plus proprement? tout
les commentaires seront appréciés.
merci!
- +1 malgré les gens qui n'ont pas de lire la Faq et downvote ces questions.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour le style feuille de calcul de recalcul automatique pour les hôtes des assignations de variables dans une instruction Transact-SQL SELECT liste. Je suis curieux de savoir si Microsoft SQL Server ou Sybase ASE le faire, mais c'est SQL Anywhere...
Du comportement de votre code d'origine, ça ressemble à des références à d'hôte variables (la référence à @v_d1 dans l'appel à dateadd) référez-vous toujours aux valeurs qui existaient au moment de la déclaration de démarrage (null), pas de le nouveau de la valeur (la valeur de @v_d):
Vous signaler que votre deuxième version (séparer les instructions SELECT) ne fonctionne pas, mais la suivante fonctionne pour moi:
La feuille de style de recalcul vous êtes à la recherche pour N'appliquer pour sélectionner les éléments de la liste codée "expression COMME identifiant" (mais ce n'est pas exactement ce que vous voulez)...
Si vous voulez de style feuille de calcul calcul ET vous souhaitez héberger des assignations de variables, je vous suggère de passer à la Watcom-dialecte SQL de sorte que vous pouvez utiliser le DANS la liste:
Le comportement est le même dans SQL Anywhere 9.0.2 et 11.0.1.
Breck