在SQL Server中我们可以使用:
DECLARE @variable INT;
SELECT @variable= mycolumn from myTable;
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Oracle中做同样的事情?我目前正在尝试以下方法:
DECLARE COMPID VARCHAR2(20);
SELECT companyid INTO COMPID from app where appid='90' and rownum=1;
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?

在Sql Server中,经常在我测试存储过程的主体时,我将主体复制到SSMS中,将页面顶部的变量DECLARE,将它们设置为一些样本值,并按原样执行主体.
例如,如果我的proc是
CREATE PROC MySampleProc
@Name VARCHAR(20)
AS
SELECT @Name
Run Code Online (Sandbox Code Playgroud)
然后我的测试SQL将是
DECLARE @Name VARCHAR(20)
SET @Name = 'Tom'
SELECT @Name
Run Code Online (Sandbox Code Playgroud)
什么是Oracle PL/SQL相当于此?
这是我提出的最接近的,但是我得到了"PLS-00428:在这个SELECT语句中需要一个INTO子句"
DECLARE
myname varchar2(20);
BEGIN
myname := 'Tom';
select myname from DUAL;
END;
Run Code Online (Sandbox Code Playgroud)
这是我真正想要做的更好的例子:
DECLARE
myname varchar2(20);
BEGIN
myname := 'Tom';
SELECT *
FROM Customers
WHERE Name = myname;
END;
Run Code Online (Sandbox Code Playgroud)
但是,当我真的只想要在屏幕上打印的记录而不是存储在另一个表格中时,它想要一个'INTO'.
解决:
感谢@Allan,我的工作得很好.Oracle SQL Developer显然会记住您提供的参数值.然而,PL/SQL Developer不想与此有任何关系....

如果您"运行为脚本",它将遵循您的默认值,但它只会返回结果作为ASCI文本,而不是网格/电子表格
