本文共 1840 字,大约阅读时间需要 6 分钟。
oracle存储过程查询多表的问题。
CREATE OR REPLACE PROCEDURE Clerk_HandheldDevices_GetList
(
SCANTIME_IA NVARCHAR2,
SCANTIME_IB NVARCHAR2,
sitename_IN NVARCHAR2,
devicetype_IN NVARCHAR2,
V_CS OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN V_CS FOR
SELECT devicemac,sitename,username from pda_devicelist;
OPEN V_CS FOR
SELECT count(SCANHAWB)as SCANHAWB FROM pda_scandata_disp WHERE SCANTIME>=TO_DATE(SCANTIME_IA,'yyyy-mm-dd hh24:mi:ss') and SCANTIME<=TO_DATE(SCANTIME_IB,'yyyy-mm-dd hh24:mi:ss') and scanstation=sitename_IN and devicetype=devicetype_IN;
OPEN V_CS FOR
SELECT count(SCANHAWB)as SCANHAWB from pda_scandata_sign where scantime>=to_date(SCANTIME_IA,'yyyy-mm-dd hh24:mi:ss') and scantime<=to_date(SCANTIME_IB,'yyyy-mm-dd hh24:mi:ss') and scanstation=sitename_IN and devicetype=devicetype_IN;
OPEN V_CS FOR
SELECT count(SCANHAWB)as SCANHAWB from pda_scandata_sign where scantime>=to_date(SCANTIME_IA,'yyyy-mm-dd hh24:mi:ss') and scantime<=to_date(SCANTIME_IB,'yyyy-mm-dd hh24:mi:ss') and scanstation=sitename_IN and devicetype=devicetype_IN and SCANHAWB='10';
OPEN V_CS FOR
SELECT count(SCANHAWB)as SCANHAWB from pda_scandata_sign where scantime>=to_date(SCANTIME_IA,'yyyy-mm-dd hh24:mi:ss') and scantime<=to_date(SCANTIME_IB,'yyyy-mm-dd hh24:mi:ss') and scanstation=sitename_IN and devicetype=devicetype_IN and SCANHAWB='11';
RETURN ;
END;
以上是我写的代码,只能输出一个字段,我想的是查询几张表就输出几个!也就是
devicemac,sitename,username,SCANHAWB,SCANHAWB,SCANHAWB,SCANHAWB
这么几个现在值出现了一个SCANHAWB这样的字段我需要改哪里???;
oracle
存储
date
------解决方案--------------------
你的过程只会返回最后一个 open v_cs for 的查询结果。
你只要写一个open v_cs for 查询语句 就行了。先把这个查询语句改好了吧。
------解决方案--------------------
你这个过程的输出是个cursor,但是因为你在过程内的5个语句使用了同一个游标变量,所以相当于连续对一个变量赋值5次——当然只有最后一次被保留……
如果你想要多个结果,可能需要使用5个出参
------解决方案--------------------
引用:你这个过程的输出是个cursor,但是因为你在过程内的5个语句使用了同一个游标变量,所以相当于连续对一个变量赋值5次——当然只有最后一次被保留……
如果你想要多个结果,可能需要使用5个出参
对头
转载地址:http://naspa.baihongyu.com/