我有一个SQL存储过程,用于在队列中获取一批结果。我希望转移到一个Sqlite数据库,并想知道如果可能的话我会怎么做。
ALTER PROCEDURE [dbo].[GetNextItemInQueue]
@LockedBy varchar(75)
AS
SET NOCOUNT ON;
declare
@Error int,
@ExitCode int,
@RowCount int,
@PendingStatus varchar(75),
@MinutesBeforeBreakLock int,
@RequestId int,
@BatchSize int
select
@Error = 0,
@ExitCode = 0,
@RowCount = 0,
@PendingStatus = 'Pending',
@MinutesBeforeBreakLock = 1,
@BatchSize = 100
BEGIN TRY
BEGIN TRANSACTION ProcessQueue
UPDATE TOP(@BatchSize) UploadQueue WITH (UPDLOCK, READPAST)
SET
LockedBy = @LockedBy,
LockedTime = GETDATE()
OUTPUT inserted.Id, inserted.LockedTime, inserted.CompletedTime, inserted.RequestType, inserted.RequestedTime, inserted.Status, inserted.LockedBy, inserted.Data
WHERE
STATUS = @PendingStatus
AND (LockedTime IS NULL OR
DateDiff(mi, LockedTime, GetDate()) >= @MinutesBeforeBreakLock)
COMMIT TRANSACTION ProcessQueue
END TRY
BEGIN CATCH
IF XACT_STATE() > 0
ROLLBACK TRANSACTION ProcessQueue;
ELSE IF XACT_STATE() < 0
ROLLBACK TRANSACTION;
END CATCH
答案 0 :(得分:0)
SQLite does not have stored procedures(或任何其他控制语句)。 在嵌入式数据库中,这没有多大意义,因为无论如何代码都将在同一个进程中执行。
您必须以您用于访问数据库的任何语言实现您的程序。
至于队列,SQLites也没有它们,因为没有单独的服务器可以从您的程序异步运行。 只需直接执行各个SQL命令/查询。