0

エラーを取り除く方法を理解するのに問題があります。Begin ステートメントの近くに間違った構文があると表示されます。私はそれが前を意味すると思いますが、私は何を知りません。関数のさまざまな宣言を試みましたが、機能しませんでした。

複数のプロセスのために、プロセスのすべてのステップで行が供給されるテーブルがあります。この関数はプロセス名 (単位) と時間を取り、そのプロセスの最初から最後までのすべての行を結果として返す必要があります。

関数なしでSQLを実行するとうまくいきます。

CREATE FUNCTION [GetFullCIP]
(
 @pTime DATETIME2,
 @pName NVARCHAR(50)
)
RETURNS TABLE 
AS
BEGIN
 DECLARE @cipid int
 SELECT TOP(1) @cipid=unit_id FROM [dbo].[md_units] WHERE unit=@pName

 DECLARE @stop Datetime2;
 DECLARE @start Datetime2;

--start
 SELECT TOP (1) @start=[begin_date]   FROM [dbo].[log] WHERE [operation_id]=1  AND unit_id=@cipid AND [begin_date]   <=@pTime ORDER BY [cip_id] DESC
--stop
 SELECT TOP (1) @stop=[inserted_date] FROM [dbo].[log] WHERE [operation_id]=99 AND unit_id=@cipid AND [inserted_date]>=@pTime ORDER BY [cip_id] ASC

 
 RETURN (SELECT * FROM [dbo].[log] WHERE unit_id=@cipid AND [begin_date]>=@start AND [inserted_date]<=@stop)
END
GO

戻りテーブルに @resdata のような名前を付ける必要があることを読みました。私はそれを試してみましたが、最後に SET @resdata=(SELECT ...) と書いていますが、 @resdata をもう知らないため、うまくいきません。

事前にThx

4

1 に答える 1