T-SQL de mise à Jour des colonnes de la table à l'aide de la fonction
J'ai le tableau suivant:
RecordID
Name
Col1
Col2
....
ColN
La RecordID
est BIGINT PRIMARY KEY CLUSTERED IDENTITY(1,1)
et RecordID
et Name
sont initialisés. Les autres colonnes sont les valeurs Null.
J'ai une fonction qui retourne des informations sur les autres colonnes par Name
.
Initialisé à ma table, je utiliser l'algorithme suivant:
- Créer une BOUCLE
- Obtenir une ligne, sélectionnez son
Name
valeur - Exécuter la fonction à l'aide du nom sélectionné, et de stocker le résultat
dans les variables temp - Insérer les variables temp dans le tableau
- Passer à l'enregistrement suivant
Est-il un moyen de le faire sans boucle?
OriginalL'auteur gotqn | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
Cross apply a été essentiellement construit pour cette
APPLIQUER à l'aide de
à l'aide de la croix s'appliquer à une instruction de mise à jour
OriginalL'auteur paparazzo
Vous pouvez simplement dire la chose suivante: si vous avez déjà les enregistrements dans la table.
Lors de l'insertion de nouveaux enregistrements, en supposant RecordID est auto-généré, vous pouvez dire
où @Nom contient la valeur de la colonne Nom.
Si vous avez une seule méthode pour être appelé à remplir une colonne, puis cette fonction sera appelée pour le nombre de lignes présentes dans la DB. Si vous souhaitez limiter le nombre de lignes pour lesquelles cela doit exécuter, vous pouvez évidemment spécifier une clause where pour qualifier ces ensemble de lignes.
Oui, je sais cela. Je voulais exécuter la fonction pour chaque ligne. Mon point est,que les fonctions renvoie à 10 colonnes, pas un seul.
Je n'ai pas eu qu'un seul appel de fonction retourne toutes les colonnes d'une ligne donnée. De toute façon, je vois que tu as eu ce que tu voulais de l'autre réponse.
C'est la réponse la plus simple. Mise à jour de colonnes w la sortie d'une fonction est un très basique, très utile méthodologie.
OriginalL'auteur Vikdor