Je suis sur le point de convertir une procédure stockée de PL / SQL à SQL Server. La procédure utilise un curseur pour boucle via les résultats d'une requête code> code>. Existe-t-il un serveur SQL équivalent à l'oracle rowtype code> construction? P>
3 Réponses :
La manière SQL d'utilisation d'un curseur est indiquée ci-dessous Lien de référence P> P>
Et c'est lent. Évitez les curseurs autant que vous pouvez - ce qui signifie réécrire le sp;)
La vitesse n'est pas une préoccupation. La procédure sera exécutée tous les soirs lorsque les systèmes sont hors ligne.
Je voudrais éviter de déclarer tant de variables, car la table a plus de 40 champs ...
Il s'agit d'une raison massive de ne pas aimer SQL Server par rapport à Oracle.
Je suis tellement déçu que SS n'a pas de type% de type et% ROWTYPE. Celles-ci permettent de sauvegarder des heures de travail lors de l'écriture initiale et dans le cas où le type d'une colonne doit changer, il enregistre de revenir en arrière et de réorganiser tout le code. P>
dans Oracle, j'écris. Quelque chose comme: p>
déclarer @myrowvar astable% Rowtype; p>
dans SQL Server, je devais juste écrire ceci ceci: p> harvey p> p>
J'aimerais pouvoir uppoter cela 1000 fois. Je manque pl / sql. SQL Server n'a pas de boucle.
Yup ... un uppot d'un devra faire ... Mais sachez que j'ai suscité beaucoup plus de fois dans ma tête.
comme @harveyfrench code> a répondu il n'y a pas de
@rowtype code>. Pour générer toutes les variables de colonnes, vous pouvez utiliser cette collision Sélectionner et copier des résultats:
SELECT 'DECLARE @customPrefix' + COLUMN_NAME + ' ' + DATA_TYPE + ';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Your_table'
J'aimerais avoir accès à ces tables :(
Si vous pouvez vous lancer encore plus d'informations ici, nous pourrions peut-être vous aider à éviter un curseur tous ensemble, je tente juste de vous échapper de l'ancien «ne le fais pas de cette façon» Type de réponse :)