Question

Je suis nouveau à Firebird, et je vais avoir des difficultés particulières à traduire ce T-SQL Firebird SQL. Ce code est stocké à l'extérieur de la base de données, et non dans une procédure stockée.

DECLARE @NumTotal int
DECLARE @NumUsed int

SELECT @NumTotal = COUNT(*)
    FROM "some_Table"
    WHERE "CreatedOn"=@CreatedOn

SELECT @NumUsed = COUNT(*)
    FROM "some_Table"
    WHERE "CreatedOn"=@CreatedOn AND "UserID" IS NOT NULL

SELECT @NumUsed AS "NumUsed", @NumTotal AS "NumTotal"

Je suppose que des erreurs et mes expériences que je suis fondamentalement forcé de mettre cela dans une procédure stockée en quelque sorte. Est-il possible que je peux le faire tout en gardant toujours le code de la base de données?

Était-ce utile?

La solution

Votre code peut être simplifiée à une seule requête:

SELECT COUNT(*) AS numTotal,
       (SELECT COUNT(*)
          FROM YOUR_TABLE
         WHERE userid IS NOT NULL
           AND createdon = @createdon) AS numUsed
  FROM YOUR_TABLE
 WHERE createdon = @createdon

L'utilisation des guillemets doubles est ANSI pour échapper à des caractères inhabituels, dont aucun je vois dans l'exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top