在Oracle SQL查询中使用变量

问题描述:

我需要在select语句中使用变量,但我不知道我做错了什么。在Oracle SQL查询中使用变量

如果我运行测试脚本波纹管,它的正常工作:

DECLARE 
    SalesOrderId VARCHAR(10); 
BEGIN 
    SalesOrderId := '138296584'; 

    dbms_output.put_line(SalesOrderId); 
END; 

但是,如果我把一个选择查询内开始末端块,不工作。下面的代码:

DECLARE 
    SalesOrderId VARCHAR(10); 
BEGIN 
    SalesOrderId := '138296584'; 

    dbms_output.put_line(SalesOrderId); 

    SELECT * FROM tblOrders tbl WHERE tbl.SalesOrderId = SalesOrderId; 
END; 

,并抛出错误:

[Error] Execution (8: 5): ORA-06550: line 8, column 5: PLS-00428: an INTO clause is expected in this SELECT statement 

我做错了什么?

谢谢。

+0

一位不愿具名的PL/SQL块不能返回表数据。你可以编写一个执行此操作的PL/SQL函数(一个流水线函数),或者让你的数据块在控制台上输出数据(DBMS_OUTPUT),或者使用带绑定变量的SQL('WHERE tbl.SalesOrderId =:SalesOrderId;')。 –

有错误很明显,你需要存储的输出某处(意义),所以使用INTO

SELECT tbl.SalesOrderId,tbl.column1 
INTO varSalesOrderId,varColumn1 
FROM tblOrders tbl 
WHERE tbl.SalesOrderId = SalesOrderId; 
+0

对于真正的我的查询做一些左连接,我从这些表中选择列,所以我没有一个简单的数据在选择和入不工作。 ORA-06550:第16行第5列: PL/SQL:ORA-00947:值不足 ORA-06550:第8行第5列: PL/SQL:错误:执行错误: SQL语句被忽略 –

+0

@JoseFelipeBlumdeAraujo您可以将'INTO'用于多个变量。请参阅编辑。 – sagi

+0

好了,现在我做了正确的事情,我把我正在使用的所有列,但其他错误抛出:[错误]执行(1:3):ORA-01843:不是有效月份ORA-06512:在行15线路错误在:SalesOrderId:= 138296584 –