私たちのチーフデータベースプログラマーは今週休暇で出かけています、そして私は立ち往生しています。
次のサブクエリを含むビューが作成されています。
select cast(cast(getdate() + i as date) as datetime) DATEVALUE
from NumbersTable(1,100,1)
これが何をするのかわかりません。Squirrel内で実行しようとすると、次のようになります。
Error: Procedure or function NumbersTable has too many arguments specified.
SQLState: 37000
ErrorCode: 8144
NumbersTable用に作成する関数は次のとおりです。
CREATE FUNCTION NumbersTable (
@fromNumber int,
@toNumber int,
@byStep int
) RETURNS TABLE
RETURN (
WITH CTE_NumbersTable AS (
SELECT @fromNumber AS i
UNION ALL
SELECT i + @byStep
FROM CTE_NumbersTable
WHERE
(i + @byStep) <= @toNumber
)
SELECT *
FROM CTE_NumbersTable
)
;
と
CREATE FUNCTION NumbersTable (
@fromNumber int,
@toNumber int
) RETURNS TABLE
RETURN (
WITH T_0_THRU_15 AS (
SELECT 0 j UNION ALL
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 9 UNION ALL
SELECT 10 UNION ALL
SELECT 11 UNION ALL
SELECT 12 UNION ALL
SELECT 13 UNION ALL
SELECT 14 UNION ALL
SELECT 15
)
SELECT T1.j + (T2.j*16) + (T3.j*256) + @fromNumber i
FROM T_0_THRU_15 T1, T_0_THRU_15 T2, T_0_THRU_15 T3
WHERE T1.j + (T2.j*16) + (T3.j*256) + @fromNumber <= @toNumber
)
;
これをMicrosoftSQLServer2008R2に対して実行しています。奇妙なことに、私は以前にこのデータベースに対してこのコードを実行したことがあり、それが機能し、今何をすべきかわからないと信じています。