ASP.NETでWebポータルを構築しているため、私たちの環境で発生する、当社独自のプラットフォームのセキュリティイベントを追跡できます。エラーが発生してもストアドプロシージャ内で複数のクエリを実行する
データは本当に単純です。我々はそれを収集し、かなり基本的なテーブルにそれをログに記録:
CREATE TABLE [dbo].[tblBonks]
(
[bonkID] [int] IDENTITY(1,1) NOT NULL,
[bonkVictim] [nvarchar](50) NOT NULL,
[bonkMachineID] [nvarchar](max) NULL,
[bonkUser] [nvarchar](50) NOT NULL,
[bonkTime] [datetime] NOT NULL,
CONSTRAINT [PK_tblBonks]
PRIMARY KEY CLUSTERED
)
私は私のコードは、24時間、7day、および1ヶ月の統計を収集するために呼び出すストアドプロシージャを持っています。私が設定した変数@Scoreboardに応じて、ストリングを渡して、ストアドプロシージャに異なるスコアボードの統計情報を生成させることができます。
これはすべてかなり簡単です。ここで
は、それが今存在するストアドプロシージャです:
CREATE PROCEDURE sp_BuildScoreboard
@ScoreBoard nvarchar(25),
@Day nvarchar(5) OUTPUT,
@Week nvarchar(5) OUTPUT,
@Month nvarchar(5) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
IF (@ScoreBoard = 'VICTIM')
BEGIN
set @Day = (select TOP(1) bonkVictim, count(bonkVictim) as bonknumber
from tblBonks
where bonkTime > DATEADD(DAY, -1, SYSDATETIME())
and bonkVictim != bonkUser
group by bonkVictim
order by bonknumber desc)
/* 7 days */
set @Week = (select TOP(1) bonkVictim, count(bonkVictim) as bonknumber
from tblBonks
where bonkTime > DATEADD(WEEK, -1, SYSDATETIME())
and bonkVictim != bonkUser
group by bonkVictim
order by bonknumber desc)
/* 1 month */
set @Month = (select TOP(1) bonkVictim, count(bonkVictim) as bonknumber
from tblBonks
where bonkTime > DATEADD(MONTH, -1, SYSDATETIME())
and bonkVictim != bonkUser
group by bonkVictim
order by bonknumber desc)
END
/*ELSE IF (@ScoreBoard = 'LEADER')
BEGIN
END
ELSE IF (@ScoreBoard = 'MACHINE')
BEGIN
END*/
END
GO
私はこれが何らかの理由で動作しないことを学んできましたが。これらは、独自の値を出力変数に返す3つの独立したクエリでなければなりません。
Msg 116, Level 16, State 1, Procedure sp_BuildScoreboard, Line 38
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.Msg 116, Level 16, State 1, Procedure sp_BuildScoreboard, Line 41
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.Msg 116, Level 16, State 1, Procedure sp_BuildScoreboard, Line 42
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
私はT-SQLで超弱いよ:
は、私はこのエラーを取得します。これらのエラーを検索すると、私と完全に関連していないいくつかの問題が発生します。私は間違って何をしていますか?
構文に関するヒントをありがとう。そして、私の質問の書き換え。あなたの例のように更新され、完全に動作します! –