Запустите процедуру Oracle только для блокировки строки, не возвращая набор результатов - PullRequest
1 голос
/ 27 февраля 2011

Я хочу запустить процедуру для принудительной блокировки строки в строке, но я не хочу возвращать набор результатов клиенту и не хочу ничего обновлять.Ниже описан процесс:

CREATE OR REPLACE PROCEDURE SP_LOCK_Row
 (IDRow IN INTEGER)
IS
BEGIN
  SELECT *
  FROM TBLTable
  WHERE IDRow = IDRow 
  FOR UPDATE;
END;

Проблема в том, что я получаю сообщение об ошибке: PLS-00428: an INTO clause is expected in this SELECT statement.Есть ли способ для меня, чтобы заблокировать строку без необходимости возвращать набор результатов обратно клиенту?Эквивалент SQL Server:

CREATE PROCEDURE dbo.SP_LOCK_Row(
  @IDRow INT)
AS
SELECT *
FROM dbo.TBLTable WITH (UPDLOCK, ROWLOCK)
WHERE IDRow = @IDRow

Tks

1 Ответ

6 голосов
/ 27 февраля 2011

Я не знаю, насколько разумно так кодировать, но вот что:

CREATE OR REPLACE PROCEDURE SP_LOCK_Row
 (IDRow IN INTEGER)
IS
 dummy varchar2(1);
BEGIN
  SELECT 'x' into dummy
  FROM TBLTable
  WHERE IDRow = IDRow 
  FOR UPDATE;
END;

должно сработать.Рональд - http://ronr.blogspot.com

...