Oracle PL/SQL选择变量

Oracle PL/SQL选择变量,oracle,plsql,syntax-error,Oracle,Plsql,Syntax Error,我试图在SQLDeveloper中运行以下查询,但收到一个错误。我试图声明两个局部变量(var_num1和payDate),然后设置变量。有人知道我可能做得不对吗?我知道Oracle SQL与SQL Server有点不同 DECLARE var_num1 number; payDate date; BEGIN var_num1 := 100; payDate := '10/1/2013' BEGIN SELECT * FROM Paycode WHERE P

我试图在SQLDeveloper中运行以下查询,但收到一个错误。我试图声明两个局部变量(var_num1和payDate),然后设置变量。有人知道我可能做得不对吗?我知道Oracle SQL与SQL Server有点不同

DECLARE
  var_num1 number; 
  payDate date;
 BEGIN 
  var_num1 := 100; 
  payDate := '10/1/2013'
  BEGIN 
    SELECT * FROM Paycode WHERE PaycodeID = var_num1 and PaycodeDate = payDate;
  End;
END; 


在PL/SQL中不能使用SELECT WITH INTO子句。SELECT的输出必须存储在某个位置。表、变量或记录。请参阅下面的示例,了解如何将SELECT语句的结果存储到记录中

DECLARE
  var_num1 number; 
  payDate date;
  v_result Paycode%ROWTYPE;
BEGIN 
  var_num1 := 100; 
  payDate := '10/1/2013';

    SELECT * INTO v_result
    FROM Paycode
    WHERE PaycodeID = var_num1 and PaycodeDate = payDate;

END; 

如果您想使用此代码块在SQL Developer中返回结果集,则需要为查询打开一个ref游标,例如

DECLARE
  refCur REF CURSOR;
  refc refCur;
  var_num1 number; 
  payDate date;
  v_result Paycode%ROWTYPE;
BEGIN 
  var_num1 := 100; 
  payDate := '10/1/2013';

OPEN refc FOR
    SELECT * 
    FROM Paycode
    WHERE PaycodeID = var_num1 and PaycodeDate = payDate;

END; 

谢谢你的回复。“v_结果”是变量还是表格?我不想创建一个表,它基本上是一个存储在变量中的行(有些人可能称之为对象)。当选择表中的所有列时(使用*),这是存储整行内容的常用方法,请参见,太好了,所以它实际上不是创建物理行或表?这只是在执行查询时存储在内存中,对吗?谢谢您的帮助。当我尝试此操作时,结果是“Harvetmous block completed”,它实际上并没有选择结果。@user3083460它运行了
select
语句。您只是没有对结果做任何有用的操作。这是一个PL/SQL块,而不是一个查询。
DECLARE
  refCur REF CURSOR;
  refc refCur;
  var_num1 number; 
  payDate date;
  v_result Paycode%ROWTYPE;
BEGIN 
  var_num1 := 100; 
  payDate := '10/1/2013';

OPEN refc FOR
    SELECT * 
    FROM Paycode
    WHERE PaycodeID = var_num1 and PaycodeDate = payDate;

END;