在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
我做错了什么?
谢谢。
有错误很明显,你需要存储的输出某处(意义),所以使用INTO
:
SELECT tbl.SalesOrderId,tbl.column1
INTO varSalesOrderId,varColumn1
FROM tblOrders tbl
WHERE tbl.SalesOrderId = SalesOrderId;
对于真正的我的查询做一些左连接,我从这些表中选择列,所以我没有一个简单的数据在选择和入不工作。 ORA-06550:第16行第5列: PL/SQL:ORA-00947:值不足 ORA-06550:第8行第5列: PL/SQL:错误:执行错误: SQL语句被忽略 –
@JoseFelipeBlumdeAraujo您可以将'INTO'用于多个变量。请参阅编辑。 – sagi
好了,现在我做了正确的事情,我把我正在使用的所有列,但其他错误抛出:[错误]执行(1:3):ORA-01843:不是有效月份ORA-06512:在行15线路错误在:SalesOrderId:= 138296584 –
一位不愿具名的PL/SQL块不能返回表数据。你可以编写一个执行此操作的PL/SQL函数(一个流水线函数),或者让你的数据块在控制台上输出数据(DBMS_OUTPUT),或者使用带绑定变量的SQL('WHERE tbl.SalesOrderId =:SalesOrderId;')。 –