有请zhuzhichao及其他大虾帮忙解决一个存储过程的问题?

am2000 2001-07-25 08:33:34
我现在需要用ORACLE写一个存储过程。
基本思路如下:
功能:获取单据号(递增)
要求:
1、能够通用。即适合于每一个相关窗体
2、在开始的时候生成
格式:
共12个字节:前面八个为年月日,第九十位为单据标志位,后面两位为序号。初始值为200107250101
多谢指点!
...全文
198 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
是將flowno加1存到billtable中去.
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
:)
是的.
所有的窗體用的號全在billtable這張表中.
然後我判斷日期如果是新的一天就從'01'開始,否則用表中的號.
喔,忘了告訴你,你取到號後,在存到你的主表中去時,
別忘了將flowno加1存進去.
am2000 2001-07-25
  • 打赏
  • 举报
回复
哦,我知道你的意思了,你是用标识位来控制的。好!好思路!我真没想到啊
am2000 2001-07-25
  • 打赏
  • 举报
回复
草兄:我还有一个表名做参数的吧
am2000 2001-07-25
  • 打赏
  • 举报
回复
谢谢,我试试先
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
create table billtable --單據表
(
billdate varchar2(8),
billsign varchar2(2),
flowno varchar2(2)
);


/*根據單據標誌位得到單號*/
create or replace procedure getdefaultno(
v_sign in varchar2, --標誌位
v_defaultno out varchar2) --單號
as
v_today varchar2(8); --今天日期
v_date varchar2(8); --表中日期
v_flowno varchar2(2); --流水號
begin
select (to_char(sysdate,'yyyy')||to_char(sysdate,'mm')||to_char(sysdate,'dd')) into v_today from dual;
select billdate,flowno into v_date,v_flowno from billtable where billsign = v_sign;
if (v_date is null) then
insert into billtable values (v_today,v_sign,'01'); --如果表中沒有此標誌位的紀錄
v_defaultno := v_today || v_sign || '01';
else
if (v_today = v_date) then
v_defaultno := v_today || v_sign || v_flowno; --如果是今天
else
update billtable set billdate = v_today ,flowno = '01' where billsign = v_sign; --新的一天
v_defaultno := v_today || v_sign || '01';
end if;
end if;
dbms_output.put_line(v_defaultno);
end getdefaultno;
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
我是這樣想的,
如果你每一个相关窗体
傳入的单据标志位都不同就好辦了.
例如,w_a傳入'01',w_b傳入'02'.

zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
像单据:DH2001072501 是傳進去變成9,10位的01嗎?
am2000 2001-07-25
  • 打赏
  • 举报
回复
我想这不是很难,只是我一直没有ORACLE的参考书,E文又菜。所以...需要请你指点。
除此之外,我主要是不能处理通用。我不想在每个窗体中都写个过程来调用。
am2000 2001-07-25
  • 打赏
  • 举报
回复
没有实际意义,最好做为输入参数输入进去。譬如说到货单据:DH2001072501
am2000 2001-07-25
  • 打赏
  • 举报
回复
就是单句类型
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
呵呵,从数据库版移到pb版了.
wangsw 2001-07-25
  • 打赏
  • 举报
回复
????up
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
"单据标志位"
是什麼東東?
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
一滴兄弟太抬舉我了.
我可不是大蝦,呵呵.

先占第一,再看內容.

:)
am2000 2001-07-25
  • 打赏
  • 举报
回复
谢谢两位了,等我运行成功后就结贴
guo 2001-07-25
  • 打赏
  • 举报
回复
原来如此
zhuzhichao 2001-07-25
  • 打赏
  • 举报
回复
to guo(正在消化Oracle):
1.我完全同意.
2.
這你就不知了.他的"单据标志位"是個固定的東西.
比如窗口a一直用'01',窗口b一直用'02'
而最後的"序号"他要求的是每天都從'01'開始.
因此它們都不能用Sequence
guo 2001-07-25
  • 打赏
  • 举报
回复
建议程序做如下修改:
1.8位日期的组成可以简化为to_char(sysdate,'YYYYMMDD')
2.后两位可以使用Sequence
最终的方法是to_char(sysdate,'YYYYMMDD')||单据号||to_char(sequence)
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)中的应用,通过Matlab代码实现了对水下机器人的动力学建模与运动控制。重点探讨了将强化学习算法QLearning与传统PID控制相结合的方法,以提升AUV在复杂、时变及非线性水下环境中的自适应控制能力。文中系统分析了AUV的运动学与动力学特性,阐述了传统PID参数整定面临的挑战,并提出采用QLearning算法在线动态优化PID控制器的比例、积分和微分参数,从而实现对系统误差、响应速度、超调量等性能指标的综合优化。通过Matlab仿真实验验证了该复合控制策略在轨迹跟踪精度、抗外部干扰能力和系统鲁棒性方面的显著优势,充分展示了强化学习在智能水下装备自主控制领域的可行性和应用潜力。; 适合人群:具备自动控制理论基础、强化学习基础知识及Matlab编程能力的研究生、科研人员和自动化、海洋工程、机器人等相关领域的技术研发人员。; 使用场景及目标:①用于水下机器人、无人潜航器等智能移动装备的高精度运动控制系统设计与开发;②开展强化学习与经典控制理论融合创新的教学案例与科学研究;③解决传统固定参数PID控制器在面对模型不确定性和环境扰动时适应性差、控制性能下降的关键问题。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注QLearning算法中状态空间、动作空间的设计逻辑以及奖励函数的构建原则,深入理解其在参数寻优过程中的作用机制,并可通过调整环境参数和初始条件来测试算法的鲁棒性与泛化能力。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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