0

MS Access の関係者である私たちの IT グループは、SQL サーバーにあまり触れさせてくれないので、必要なスケジュールされたジョブのために SQL サーバーでレコードセットをループする方法がわかりません。私はやりたいことを疑似コーディングしましたが、誰かがこれがどのように行われたかを指摘できれば非常に感謝しています...

for every record in qry_deliveryqueue
loop
if not fail then
  send docID field to SP_sendfile
  set delivereddate=getdate()
else
 insert into tbl_errors (errdate,docid) values (getdate(), docid)
endif
next record
4

3 に答える 3

0

Sql while 構文またはSql Cursor Syntaxを使用できます

于 2012-07-30T10:01:05.517 に答える
0

あなたが求めている構文はCURSOR. ドキュメントには、正しい方向を示す良い例があります。おそらく、ロジックの周りにストアド プロシージャを記述し、それをスケジューラから呼び出したいと思うでしょう。

カーソルは一般的に非効率的ですが、sp_sendfile には、すべてのレコードをセットとして扱うことを妨げる、より複雑なロジックがあると想定しています

于 2012-07-30T09:58:15.387 に答える
0

このion SQLサーバーを試してください(このコードはwhileループのサンプルです。要件に応じて微調整する必要があります)

--SQL サーバーで

Declare @idmin int,@idmax int
select @idmin=MIN(id) from  qry_deliveryqueue --This is first record in qry_deliveryqueue
select @idmax=MAX(id) from  qry_deliveryqueue --This is last record in qry_deliveryqueue
--You can 
While(@idmin <= @idmax)
begin
IF @flag<>'Fail'
begin
--  send docID field to SP_sendfile
--  set delivereddate=getdate()
end
else
begin
insert into tbl_errors (errdate,docid) values (getdate(), docid)
end
SET @idmin=@idmin+1
end
于 2012-07-30T14:07:07.857 に答える