В Sql Server, часто когда я тестирую тело хранимой процедуры, я копирую тело в SSMS, DECLARE - переменные в верхней части страницы, устанавливают их в некоторые значения выборки и выполняют тело как -is.
Например, если мой proc
CREATE PROC MySampleProc
@Name VARCHAR(20)
AS
SELECT @Name
Тогда мой тестовый sql будет
DECLARE @Name VARCHAR(20)
SET @Name = 'Tom'
SELECT @Name
Что такое эквивалент Oracle PL/SQL?
Это самое близкое, что я придумал, но я получаю "PLS-00428: предложение INTO ожидается в этой инструкции SELECT"
DECLARE
myname varchar2(20);
BEGIN
myname := 'Tom';
select myname from DUAL;
END;
Это лучший пример того, что я действительно пытаюсь сделать:
DECLARE
myname varchar2(20);
BEGIN
myname := 'Tom';
SELECT *
FROM Customers
WHERE Name = myname;
END;
Но опять же, он хочет "INTO", когда на самом деле мне просто нужны записи, напечатанные на экране, а не сохраненные в другой таблице....
ПОСТАНОВИЛИ:
Благодаря @Allan, у меня это работает достаточно хорошо. Oracle SQL Developer, по-видимому, помнит значения параметров, которые вы им поставляете. Разработчик PL/SQL, однако, не хочет иметь ничего общего с этим....
Если вы запустили как Script ", он будет соблюдать ваши значения по умолчанию, но он будет возвращать результаты только в виде текста ASCI, а не в таблицу/таблицу