Je suis sur le point de convertir une procédure stockée de pl/sql en SQL Server. La procédure utilise un curseur pour parcourir les résultats d'une requête select
. Existe-t-il un SQL Server équivalent à la construction ORACLE rowtype
?Équivalent de type RowType dans SQL Server
Répondre
La façon dont SQL d'utiliser un curseur est illustré ci-dessous
DECLARE @colA varchar(50), @colB varchar(50)
DECLARE myCursor CURSOR FOR
Select columnA, columnB From table
OPEN myCursor
FETCH NEXT FROM myCursor INTO @colA, @colB
WHILE @@FETCH_STATUS = 0
BEGIN
--do something with @colA and @colB
FETCH NEXT FROM myCursor INTO @colA, @colB
END
CLOSE myCursor
DEALLOCATE myCursor
Et c'est lent. Évitez les curseurs autant que vous le pouvez - ce qui signifie réécrire le sp;) – TomTom
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 autant de variables, car la table compte plus de 40 champs ... –
Ceci est une raison énorme de ne pas aimer SQL Server par rapport à Oracle.
Je suis tellement déçu que SS n'a pas% TYPE et% ROWTYPE. Ceux-ci économisent des heures de travail lors de l'écriture initiale du code et dans le cas où le type d'une colonne doit changer, cela évite d'avoir à revenir en arrière et à retravailler tout le code.
Dans Oracle, je l'habitude d'écrire quelque chose comme:
@MyRowVar DECLARE AS ATableau% ROWTYPE;
Dans SQL Server, je viens d'avoir à écrire ce ceci:
DECLARE @External_ID AS BIGINT = NULL;
DECLARE @PlatformID AS INT = NULL;
DECLARE @ActorIDOfReseller AS INT = NULL;
DECLARE @ActorIDOfClient AS INT = NULL;
DECLARE @ActorIDOfExtension AS INT = NULL;
DECLARE @CallType AS NCHAR (10) = NULL;
DECLARE @CallInitiatedDate AS DATE = NULL;
DECLARE @CallInitiatedTimeHH24MI AS TIME (0) = NULL;
DECLARE @TimePeriodID AS INT = NULL;
DECLARE @CallAnswered AS DATETIME = NULL;
DECLARE @CallAnsweredYN AS BIT = NULL;
DECLARE @CallDispositionID AS INT = NULL;
DECLARE @CountryID AS INT = NULL;
DECLARE @CallPrefixID AS INT = NULL;
DECLARE @FromNumber AS VARCHAR (32) = NULL;
DECLARE @ToNumber AS VARCHAR (80) = NULL;
DECLARE @CallDuration AS INT = NULL;
DECLARE @CallCostToExtension AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToClient AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToReseller AS DECIMAL (10, 6) = NULL;
DECLARE @CallCostToAdmin AS DECIMAL (10, 6) = NULL;
DECLARE @Flow AS VARCHAR (3) = NULL;
DECLARE @CallStart AS DATETIME = NULL;
DECLARE @MoneyUnit AS VARCHAR (32) = NULL;
DECLARE @Prefix AS VARCHAR (32) = NULL;
DECLARE @External_CallID AS VARCHAR (255) = NULL;
Cela me rend très triste.
Harvey
- 1. DBMS_SESSION.set_client_identifier équivalent dans SQL Server
- 2. SQL Server équivalent au type de données MySQL enum?
- 3. Équivalent OFFSET SQL Server
- 4. Équivalent T-SQL de PL/SQL% TYPE?
- 5. PACKAGE.TABLENAME% ROWTYPE dans JDBC
- 6. SQL Server équivalent à DBMS_METADATA.GET_DDL
- 7. StyleCop équivalent pour SQL Server?
- 8. MySQL \ G équivalent dans SQL Server
- 9. SQL Server équivalent de MySQL UTILISATION
- 10. SQL Server équivalent de Javascript UnEscape
- 11. SQL Server identificateur unique équivalent en C#
- 12. SQL Server: un équivalent de strpos()?
- 13. SQL Server: équivalent logique de ALL requête
- 14. équivalent SQL Server de SQL Azure DBCOPY ("AS COPIE DE")
- 15. MS Access 2007: type de données "Pièce jointe" équivalent dans SQL Server 2008?
- 16. SQL Server équivalent à NULLS FIRST d'Oracle?
- 17. Sql Server équivalent d'une fonction d'agrégation COUNTIF
- 18. SQL Server équivalent à Oracle LEAST?
- 19. SQL Server équivalent à ORACLE INSTR
- 20. équivalent de sp_helptext pour les tables dans SQL Server
- 21. Est-ce que SQL Server 2005 a un équivalent au type de données ENUM de MySql?
- 22. Qu'est-ce que PostgreSQL est équivalent à SQL Server NVARCHAR?
- 23. Type de données hexadécimal SQL Server
- 24. Équivalent SQL IN dans CAML
- 25. SQL Server équivalent de la réplication multi-maître MySQL?
- 26. Équivalent SQLite de la fonction SQL Server DateAdd
- 27. Équivalent de LIMIT et OFFSET pour SQL Server?
- 28. Interprétation des codes de type dans sys.objects dans SQL Server
- 29. VB6 équivalent pour le type de données flottant SQL 2K?
- 30. Opérateurs de type de données personnalisés dans Sql Server?
Si vous pouvez jeter un peu plus d'informations ici, nous pourrions être en mesure de vous aider à éviter un curseur tous ensemble, je tends juste éloigner de l'ancien « ne le font pas de cette façon » type de réponse :) – keith