pl/sql中存储过程

zhangfengyi 2012-03-27 10:33:33
在SQLSERVER中存储过程没问题,初次接触ORCAL,不清楚如何在PL/SQL中创建,修改,执行存储过程,请高人指点
...全文
264 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaoyu0707 2012-04-06
  • 打赏
  • 举报
回复
都是高手,学习。。。
啊彪123 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 11 楼 的回复:
引用 10 楼 的回复:
存储过程的问题解决了,还有新的问题,输入参数有可能全部为空,也可能全部不为空,这个在拼SQL语句时怎么拼,USING怎么写

SQL code

CREATE OR REPLACE PROCEDURE "CARD"."TRANS"
(
mcht in varchar,
sett in varchar,
startcardno ……
[/Quote]

你这sql看着就效率低下的,明显是为了完成任务而写的!
优化优化吧!
啊彪123 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
存储过程的问题解决了,还有新的问题,输入参数有可能全部为空,也可能全部不为空,这个在拼SQL语句时怎么拼,USING怎么写

SQL code


CREATE OR REPLACE PROCEDURE "CARD"."TRANS"
(
mcht in varchar,
sett in varchar,
startcardno in varchar,
endcardno in ……
[/Quote]
在存储过程里判断参数,拼接sql。
啊彪123 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
以下存储过程,编译错,为什么

SQL code


create or replace procedure te(x in number) is
begin
if x>0 then
begin
x:=0-x;
end;
end if;
if x=0 then
begin
x:=1;
……
[/Quote]

create or replace procedure te(x in number) is
begin
if x>0 then
begin
x:=0-x;
end;
end if;
if x=0 then
begin
x:=1;
end;
end if;
end;
dbms_output.put_line(x);
end te;
/
zhangfengyi 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 10 楼 的回复:
存储过程的问题解决了,还有新的问题,输入参数有可能全部为空,也可能全部不为空,这个在拼SQL语句时怎么拼,USING怎么写

SQL code

CREATE OR REPLACE PROCEDURE "CARD"."TRANS"
(
mcht in varchar,
sett in varchar,
startcardno in varchar,
e……
[/Quote]
可能是我没说明白, 现在这个存储过程是没问题, 我这里传入的参数是18个,在拼SQL语句时mcht(商户号),startdate(起始日期),enddate(结束日期)三个是必选项,其余都是可选项,那我在拼SQL语句时该怎样拼呢,如果是sqlserver直接拼好连接在where后面就可以了,pl/sql除了where以外,还有using,能不能也动态往using后面加变量呢,不知这样说明白没有.或者有什么更简单的方法拼出来,查询界面如图所示.

另外3楼那个是以前用C++写的,效率太低了,现在正在改成sql/sql存储过程.
少多慢快 2012-04-05
  • 打赏
  • 举报
回复
为什么已经有了存储过程还用java和c++等来实现存储过程呢
ssqtjffcu 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
存储过程的问题解决了,还有新的问题,输入参数有可能全部为空,也可能全部不为空,这个在拼SQL语句时怎么拼,USING怎么写

SQL code

CREATE OR REPLACE PROCEDURE "CARD"."TRANS"
(
mcht in varchar,
sett in varchar,
startcardno in varchar,
endcardno in va……
[/Quote]
你现在这个过程没有问题啊,你是想在空的时候给个默认值还是怎么?
zhangfengyi 2012-04-05
  • 打赏
  • 举报
回复
存储过程的问题解决了,还有新的问题,输入参数有可能全部为空,也可能全部不为空,这个在拼SQL语句时怎么拼,USING怎么写

CREATE OR REPLACE PROCEDURE "CARD"."TRANS"
(
mcht in varchar,
sett in varchar,
startcardno in varchar,
endcardno in varchar,
tx_code in varchar,
banlace in varchar,
startdate in varchar,
enddate in varchar,
traceno in varchar,
batchno in varchar,
termid in varchar,
document in varchar,
cardhold in varchar,
lxname in varchar,
telphone in varchar,
gkdate in varchar,
pagesize in number,
currpage in number,
recordcount out number
)
as
strsql varchar(1000);
begin
recordcount:=888;
strsql:='select count(*) from partranslog where merch_id=:mcht and sett_postdate>=to_char(:startdate) and sett_postdate<=to_char(:enddate)';
if length(startcardno)>0 and length(endcardno)>0 then
strsql:=strsql||' and cardno>=:startcartno and cardno<=:endcardno';
execute immediate strsql into recordcount using mcht,startdate,enddate,startcardno,endcardno,tx_code,banlace;
else
execute immediate strsql into recordcount using mcht,startdate,enddate;
end if;
update proce set name=recordcount;
end trans;
/
江南小鱼 2012-03-29
  • 打赏
  • 举报
回复
oracle存储过程输入参数是只读的,不能对其进行赋值
zhangfengyi 2012-03-27
  • 打赏
  • 举报
回复

union
select DISTINCT TRAN_SLA_KEY,
TX_CODE,
cardno,
valid_date,
sett_postdate,
substr(TRAN_SLA_KEY,9,8),
input_mode,
merch_id,
REQ_TXNAMT,
integral,
trace_no,
sys_no,
orig_traceno,
rsp_code,
compl_flag,
TRANDATE,
substr(TRAN_SLA_KEY,17,5),
ADDIDATA1,
MER_ORDERNO,
REJ_CODE
from partranslog a where
((addidata1 like '%'||:PerName||'%') or (:PerName = 'Z'))
and ((addidata1 like '%'||:PerTel||'%') or (:PerTel = 'Z'))
and ((addidata1 like '%'||:PerDate||'%') or (:PerDate = 'Z'))
and ((mer_orderno = :XMLpkgDATABuf.cardholder) or (:XMLpkgDATABuf.cardholder = 'Z'))
/**** ((valid_date = :XMLpkgDATABuf.valid_date) or (:XMLpkgDATABuf.valid_date = 'Z')) delete by GuWei 20110704 *****/
and ((EXISTS(select * from merchant where a.MERCH_ID=MERCH_ID and EXISTS (select * from grppou where substr(merchant.GRP_NAME,1,8)=substr(MERGRP,1,8) and GRP_LEADER = :XMLpkgDATABuf.merch_id)) or (merch_id = :XMLpkgDATABuf.merch_id))
or (:XMLpkgDATABuf.merch_id = 'Z'))
and ((REQ_TXNAMT = :XMLpkgDATABuf.amount) or (:XMLpkgDATABuf.amount = 1000000000))
and ((term_id = :XMLpkgDATABuf.set_term) or (:XMLpkgDATABuf.set_term = 'Z'))
and ((trace_no = :XMLpkgDATABuf.trace_no) or (:XMLpkgDATABuf.trace_no = 'Z'))
and ((orig_traceno = :XMLpkgDATABuf.orig_traceno) or (:XMLpkgDATABuf.orig_traceno = 'Z'))
/*** and ((sys_no = :XMLpkgDATABuf.sys_no) or (:XMLpkgDATABuf.sys_no = 'Z')) delete by GuWei 20110704 ***/
and ((TRANDATE = :tmp_makedate) or (:tmp_makedate = 'Z'))
and ((substr(TRAN_SLA_KEY,17,5) = :XMLpkgDATABuf.instcode) or (:XMLpkgDATABuf.instcode = 'Z'))
and ((substr(TRAN_SLA_KEY,9,8) = :XMLpkgDATABuf.term_id) or (:XMLpkgDATABuf.term_id = 'Z'))
and ((BATCHID = :XMLpkgDATABuf.batchid) or (:XMLpkgDATABuf.batchid = 'Z'))
and (((substr(cardno,5,5) = :XMLpkgDATABuf.MerOnCode) or (:XMLpkgDATABuf.MerOnCode = 'Z')) or ((substr(addidata1,5,5) = :XMLpkgDATABuf.MerOnCode) or (:XMLpkgDATABuf.MerOnCode = 'Z')))
and ((merch_id = :XMLpkgDATABuf.Rev_Id) or (:XMLpkgDATABuf.Rev_Id = 'Z'))
and ((((SUBSTR(cardno,1,18) >= :XMLpkgDATABuf.startno) or (:XMLpkgDATABuf.startno = 'Z'))
and ((SUBSTR(cardno,1,18) <= :XMLpkgDATABuf.endno) or (:XMLpkgDATABuf.endno = 'Z')))
or (((SUBSTR(ADDIDATA1,1,18) <= :XMLpkgDATABuf.startno) and (SUBSTR(ADDIDATA1,20,18) >= :XMLpkgDATABuf.startno) or (:XMLpkgDATABuf.startno = 'Z'))
and ((SUBSTR(ADDIDATA1,1,18) <= :XMLpkgDATABuf.endno) and (SUBSTR(ADDIDATA1,20,18) >= :XMLpkgDATABuf.endno) or (:XMLpkgDATABuf.endno = 'Z'))))
and ((tx_code = :XMLpkgDATABuf.TxCode) or (:XMLpkgDATABuf.TxCode = 'Z'))
and ((sett_postdate >= to_char(:XMLpkgDATABuf.sett_postdate)))
and ((sett_postdate <= to_char(:XMLpkgDATABuf.tran_dt)))
zhangfengyi 2012-03-27
  • 打赏
  • 举报
回复
大家看下,这段代码是C++写的,想改成ORCAL下的存储过程,怎么优化一下,更简洁

maxrow=0;
EXEC SQL SELECT count(*) into :maxrow
FROM (select DISTINCT TRAN_SLA_KEY,
TX_CODE,
cardno,
valid_date,
sett_postdate,
substr(TRAN_SLA_KEY,9,8),
input_mode,
merch_id,
REQ_TXNAMT,
integral,
trace_no,
sys_no,
orig_traceno,
rsp_code,
compl_flag,
TRANDATE,
substr(TRAN_SLA_KEY,17,5),
ADDIDATA1,
MER_ORDERNO,
REJ_CODE
from translog a where
((addidata1 like '%'||:PerName||'%') or (:PerName = 'Z'))
and ((addidata1 like '%'||:PerTel||'%') or (:PerTel = 'Z'))
and ((addidata1 like '%'||:PerDate||'%') or (:PerDate = 'Z'))
and ((mer_orderno = :XMLpkgDATABuf.cardholder) or (:XMLpkgDATABuf.cardholder = 'Z'))
/**** ((valid_date = :XMLpkgDATABuf.valid_date) or (:XMLpkgDATABuf.valid_date = 'Z')) delete by GuWei 20110704 *****/
and ((EXISTS(select * from merchant where a.MERCH_ID=MERCH_ID and EXISTS (select * from grppou where substr(merchant.GRP_NAME,1,8)=substr(MERGRP,1,8) and GRP_LEADER = :XMLpkgDATABuf.merch_id)) or (merch_id = :XMLpkgDATABuf.merch_id))
or (:XMLpkgDATABuf.merch_id = 'Z'))
and ((REQ_TXNAMT = :XMLpkgDATABuf.amount) or (:XMLpkgDATABuf.amount = 1000000000))
and ((term_id = :XMLpkgDATABuf.set_term) or (:XMLpkgDATABuf.set_term = 'Z'))
and ((trace_no = :XMLpkgDATABuf.trace_no) or (:XMLpkgDATABuf.trace_no = 'Z'))
and ((orig_traceno = :XMLpkgDATABuf.orig_traceno) or (:XMLpkgDATABuf.orig_traceno = 'Z'))
/*** and ((sys_no = :XMLpkgDATABuf.sys_no) or (:XMLpkgDATABuf.sys_no = 'Z')) delete by GuWei 20110704 ***/
and ((TRANDATE = :tmp_makedate) or (:tmp_makedate = 'Z'))
and ((substr(TRAN_SLA_KEY,17,5) = :XMLpkgDATABuf.instcode) or (:XMLpkgDATABuf.instcode = 'Z'))
and ((substr(TRAN_SLA_KEY,9,8) = :XMLpkgDATABuf.term_id) or (:XMLpkgDATABuf.term_id = 'Z'))
and ((BATCHID = :XMLpkgDATABuf.batchid) or (:XMLpkgDATABuf.batchid = 'Z'))
and (((substr(cardno,5,5) = :XMLpkgDATABuf.MerOnCode) or (:XMLpkgDATABuf.MerOnCode = 'Z')) or ((substr(addidata1,5,5) = :XMLpkgDATABuf.MerOnCode) or (:XMLpkgDATABuf.MerOnCode = 'Z')))
and ((merch_id = :XMLpkgDATABuf.Rev_Id) or (:XMLpkgDATABuf.Rev_Id = 'Z'))
and ((((SUBSTR(cardno,1,18) >= :XMLpkgDATABuf.startno) or (:XMLpkgDATABuf.startno = 'Z'))
and ((SUBSTR(cardno,1,18) <= :XMLpkgDATABuf.endno) or (:XMLpkgDATABuf.endno = 'Z')))
or (((SUBSTR(ADDIDATA1,1,18) <= :XMLpkgDATABuf.startno) and (SUBSTR(ADDIDATA1,20,18) >= :XMLpkgDATABuf.startno) or (:XMLpkgDATABuf.startno = 'Z'))
and ((SUBSTR(ADDIDATA1,1,18) <= :XMLpkgDATABuf.endno) and (SUBSTR(ADDIDATA1,20,18) >= :XMLpkgDATABuf.endno) or (:XMLpkgDATABuf.endno = 'Z'))))
and ((tx_code = :XMLpkgDATABuf.TxCode) or (:XMLpkgDATABuf.TxCode = 'Z'))
and ((sett_postdate >= to_char(:XMLpkgDATABuf.sett_postdate)))
and ((sett_postdate <= to_char(:XMLpkgDATABuf.tran_dt)))
ICE-word 2012-03-27
  • 打赏
  • 举报
回复
create or replace procedure P_GUOCHENG(名称 in out 类型, 名称 in out 类型, ...) is
begin

end P_GUOCHENG;
过程创建。 执行 可以在命令窗口。EXEC 过程名。
zhangfengyi 2012-03-27
  • 打赏
  • 举报
回复
以下存储过程,编译错,为什么

create or replace procedure te(x in number) is
begin
if x>0 then
begin
x:=0-x;
end;
end if;
if x=0 then
begin
x:=1;
end;
end if;
dbms_output.put_line(x);
end te;
/
wangpengpengwang 2012-03-27
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE P_NAME ( 传入参数或输出参数) is or as
begin
null;--->>>执行程序
end;
wangpengpengwang 2012-03-27
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE P_NAME ( 传入参数或输出参数) is or as
begin
null;--->>>执行程序
end;
回头是岸 2012-03-27
  • 打赏
  • 举报
回复
对了 我也是oracle新手 我用的是oracle11G + PLSQL
回头是岸 2012-03-27
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCDURE PROC_NAME
(
参数(入in、出out)
)
AS(OR IS)
参数
BEGIN
--为参数赋值
参数:= z值;
--SQL
SQL语句;
END;(PROC_NAME)
内容概要:本文围绕“阶梯碳下考虑P2G-CCS与供需灵活响应的IES优化调度”展开,基于Matlab平台构建综合能源系统(IES)在阶梯式碳交易机制下的优化调度模型。研究深度融合电制气(P2G)与碳捕集、利用与封存(CCS)技术,结合需求侧灵活响应机制,旨在提升系统的低碳运行能力与经济性。通过建立多能流耦合的优化模型,协调电力、天然气、热力等多种能源形式的协同调度,有效降低系统碳排放强度,并借助YALIMIP工具包调用求解器进行高效求解。文档提供了完整的代码实现、模型构建流程与结果分析方法,涵盖从问题建模到仿真实现的全过程,具备较强的可复现性与科研参考价值。; 适合人群:具备电力系统、能源系统或优化建模相关背景的研究生、高校教师及工程技术人员,尤其适合从事综合能源系统、碳减排策略、P2G与CCS技术集成研究的专业人员,需熟练掌握Matlab编程与基本的数学规划知识。; 使用场景及目标:①用于研究阶梯式碳交易政策下综合能源系统的低碳经济调度策略;②支撑P2G-CCS技术与需求响应机制在IES的仿真集成与性能评估;③作为撰写高水平学术论文(如EI/SCI收录)的技术基础与复现资源,推动碳和背景下能源系统优化方向的创新研究。; 阅读建议:建议结合百度网盘提供的完整代码与资料包,按照模块逐步调试程序,重点理解目标函数的设计逻辑、碳交易成本的建模方式、约束条件的数学表达及求解器的配置方法,同时关注多能耦合设备的建模细节,配合公众号“荔枝科研社”获取持续的技术支持与案例拓展。
内容概要:本文系统研究了基于卷积神经网络(CNN)与支持向量机(SVM)融合的CNN-SVM混合模型在数据分类预测的应用,尤其聚焦于工业故障识别领域。通过Matlab平台实现,该方法首先利用CNN强大的多层次特征提取能力对原始输入数据进行深度特征学习,自动捕获关键局部模式与空间结构信息,随后将提取的高层特征作为输入传递至SVM分类器,借助SVM在高维空间小样本条件下卓越的分类性能与泛化能力完成最终判别任务。文详尽阐述了模型的整体架构设计、网络参数配置、训练优化流程及特征迁移机制,充分结合了深度学习在特征表达上的优势与传统机器学习在分类决策上的稳健性。实验部分通过实际故障数据集验证了该混合模型相较于单一CNN或SVM模型在分类准确率、鲁棒性和抗过拟合能力方面的显著提升,证明了其在复杂故障诊断任务的有效性与先进性; 适合人群:具备一定机器学习与深度学习理论基础,熟悉Matlab编程环境,从事故障诊断、模式识别、智能制造、电力系统监控或工业数据分析等相关领域的研究生、科研人员及工程技术开发者; 使用场景及目标:① 应用于旋转机械、电力设备、航空航天等领域的多类别故障识别与状态监测;② 掌握深度特征提取与传统分类器融合的技术路径,提升小样本、高噪声环境下数据分类的精度与可靠性;③ 为撰写高水平学术论文、开展科研项目或工程实践提供可复现的算法框架与完整代码支持; 阅读建议:读者应深入理解CNN与SVM的协同工作机制,重点分析特征提取层与分类层之间的接口设计,建议动手运行并调试所提供的Matlab代码,尝试在不同数据集上进行迁移实验与参数调优,以全面掌握该混合模型的应用技巧与优化策略。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧