将SQL Server查询转换为Firebird的麻烦麻烦
-
03-10-2019 - |
题
我是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,我在示例中都没有看到。
不隶属于 StackOverflow