sql - 我怎样才能把这个pl/sql变成一个过程
问题描述
我必须为作业编写此查询。所以我们有一个数据库,我们从中提取信息,这最终将与一些后端 c# 一起工作。有什么我可以做的吗,知道我会重复使用它,以便在我必须连接所有东西的那一天时让它变得更好和更具适应性。
set serveroutput on
DECLARE
LV_DATE HVK_RESERVATION.RESERVATION_START_DATE%TYPE;
LV_SERV VARCHAR(100);
CURSOR LCUR_RES IS
SELECT *
FROM HVK_RESERVATION R
INNER JOIN HVK_PET_RESERVATION PR
ON R.RESERVATION_NUMBER = PR.RES_RESERVATION_NUMBER
INNER JOIN HVK_PET P
ON P.PET_NUMBER = PR.PET_PET_NUMBER
INNER JOIN HVK_OWNER OW
ON OW.OWNER_NUMBER = P.OWN_OWNER_NUMBER
WHERE R.RESERVATION_START_DATE < LV_DATE
AND R.RESERVATION_END_DATE > LV_DATE;
CURSOR LCUR_SERVICE(PET_RES_NUM NUMBER) IS
SELECT *
FROM HVK_SERVICE S
INNER JOIN HVK_PET_RESERVATION_SERVICE PRS
ON PRS.SERV_SERVICE_NUMBER = S.SERVICE_NUMBER
AND PRS.PR_PET_RES_NUMBER = PET_RES_NUM;
BEGIN
LV_DATE := TO_DATE('&logdate', 'yy-mm-dd');
DBMS_OUTPUT.PUT_LINE('Kennel log for ' || '' || LV_DATE);
DBMS_OUTPUT.PUT_LINE('-------------------------------');
FOR I IN LCUR_RES LOOP
DBMS_OUTPUT.PUT_LINE('Run:' || '' || I.RUN_RUN_NUMBER || ' ' ||
'Pet: ' || '' || I.PET_NAME || ' ' ||
I.OWNER_LAST_NAME || ' Pet Reservation: ' || '' ||
I.PET_RES_NUMBER);
DBMS_OUTPUT.PUT_LINE('Reservation start/end ' || ' ' ||
I.RESERVATION_START_DATE || ' ' ||
I.RESERVATION_END_DATE);
DBMS_OUTPUT.PUT('Services : ');
FOR X IN LCUR_SERVICE(I.PET_RES_NUMBER) LOOP
DBMS_OUTPUT.PUT(X.SERVICE_DESCRIPTION || ' ');
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
FOR LREC_LOG IN (SELECT *
FROM HVK_KENNEL_LOG KL
WHERE KL.PR_PET_RES_NUMBER = I.PET_RES_NUMBER
) LOOP
DBMS_OUTPUT.PUT_LINE('Notes: ' || '' ||
LREC_LOG.KENNEL_LOG_SEQUENCE_NUMBER || ' ' ||
'Log Note: ' || '' || LREC_LOG.KENNEL_LOG_NOTES);
END LOOP;
DBMS_OUTPUT.PUT_LINE(' ');
END LOOP;
END;
它应该输出运行编号、预订编号、宠物名称和任何相关注释。
解决方案
你可以DECLARE
用 CREATE OR REPLACE PROCEDURE my_proc(in_logdate in date) IS
. 在这种情况下,my_proc
将是您的程序的名称。
您还应该使用参数而不是这样,例如日期类型的&logdate
参数名称in_logdate
...
LV_DATE := in_logdate;
...
推荐阅读
- optaplanner - kie server 可以处理 json 来发送规划问题吗
- javascript - 如何在没有 parseInt() 的 JavaScript 中创建二进制到十进制
- teamcity - 排除 zip 工件依赖项
- c# - C#如何加载/初始化类?委托返回 null 的问题
- python-3.x - 有没有一种简单的方法来手动迭代现有的 pandas groupby 对象?
- java - 提高 SSLSocketFactory 设置/首次 HTTPS 请求性能
- bittorrent - libtorrent 在会话中禁用 dht 和 lsd
- antd - 如何在@ant-design/pro-layout 中使用通知菜单?
- python-3.x - (Py2neo) - 如何使用 py2neo 指令从 neo4j 数据库返回关系 ID
- xslt - 在 xslt 中查找节点的级别