10
votes

% Rowtype équivalent dans SQL Server

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 . Existe-t-il un serveur SQL équivalent à l'oracle rowtype construction?


1 commentaires

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 :)


3 Réponses :


5
votes

La manière SQL d'utilisation d'un curseur est indiquée ci-dessous xxx

Lien de référence


3 commentaires

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 ...



27
votes

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.

dans Oracle, j'écris. Quelque chose comme:

déclarer @myrowvar astable% Rowtype;

dans SQL Server, je devais juste écrire ceci ceci: xxx < p> Cela me rend très triste.

harvey


2 commentaires

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.



5
votes

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' 


1 commentaires

J'aimerais avoir accès à ces tables :(