質問

私はFirebirdに慣れていないので、このT-SQLをFirebird SQLに翻訳するのが特に困難です。このコードは、ストアドプロシージャではなく、データベースの外側に保存されます。

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"

エラーと私の実験から、基本的にこれをストアドプロシージャに入れることを余儀なくされていると思います。データベースからコードを除外している間にこれを行う方法はありますか?

役に立ちましたか?

解決

コードは、単一のクエリまで簡素化できます。

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

二重引用符を使用することは、珍しいキャラクターを逃れるためのANSIであり、その例では見られません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top