Когда я использую хранимую процедуру для выполнения оператора DELETE
с предложением WHERE
, предложение кажется игнорируемым.
Шаги для воспроизведения:
Создайте таблицу BQ
CREATE TABLE `[project].[dataset].test` (
email STRING NOT NULL,
providerId STRING NOT NULL
);
Добавить тестовые данные
insert into `[project].[dataset].test` (email, providerId) values ('test.email@gmail.com', 'test1');
insert into `[project].[dataset].test` (email, providerId) values ('test.email@gmail.com', 'test2');
Создать хранимую процедуру, которая принимает email
и providerId
в качестве входных
CREATE OR REPLACE PROCEDURE `[project].[dataset].RemovePermission`(IN providerId STRING, IN email STRING)
BEGIN
DELETE FROM `[project].[dataset].test` p
WHERE p.email = email
AND p.providerId = providerId;
END;
Выполнить хранимую процедуру
CALL [project].[dataset].RemovePermission('test1', 'test.email@gmail.com`)
Обратите внимание, что в ответе удалены 2 строки, а тестовая таблица теперь пуста.
И наоборот, если вы выполняете удаление вручную, как показано ниже, удаляется только 1 строка - это это правильное поведение.
DELETE FROM `[project].[dataset].test` p
WHERE p.email = 'test.email@gmail.com'
AND p.providerId = 'test1';
Что я делаю не так?