帮我写一个oracle过程吧

zls0303 2001-09-04 04:28:27
我这个表输入数据:

create table gy_qcwlz
(
gysbh varchar(8) not null, /*供应商编号*/
gysmc varchar(40) , /*供应商名称*/
zzly date , /*记帐年月*/
qcyf numeric(12,2) , /*期初应付款金额*/
qcys numeric(12,2) , /*期初应收款金额*/
qcye numeric(12,2) , /*期初收付款余额*/
jz char(1) ,/*是否结算: 0 没有记帐,可以修改 1.记帐,只能查看,不能修改 */
czydm varchar(4) ,/*操作员代码*/
constraint pk_gy_qcwlz primary key(gysbh)
);

当记帐后,将这里的数据,gysbh和qcyf 逐条写入到下面两个表中去:

create table gy_wlmxz
(
wlzid varchar(8) not null , /* 登帐流水号,系统产生*/
gysbh varchar(8) not null , /*供应商编号*/
bmdm varchar(10) , /*部门代码*/
jzrq date , /*登帐日期,为登记日期,发票或付款单日期*/
jzbz char(1) not null , /*登帐标志 0、欠款 1、付款 欠款只登记所开发票数*/
sqye numeric(18,2) , /*上期余额*/
jzje numeric(18,2) , /*登帐金额*/
jzzy varchar(40) , /*摘要*/
jzny date not null , /*记帐年月*/

constraint PG_GY_WLMXZ primary key (wlzid)
)
; 注:wlzid有一个存贮过程,自动产生ID号,这个过程输出为string 假设为ls_wlzid

下一个表是:
create table gy_wlzz
(
gysbh varchar(8) not null , /*供应商编号*/
bmdm varchar(10) , /*部门代码*/
jzny date not null , /*记帐年月*/
qcye numeric(18,2) , /* 期初应付款余额*/
bqyf numeric(18,2) , /*本期应付款*/
bqfk numeric(18,2) , /*本期付款*/
qmye numeric(18,2) , /*期末余额*/

constraint PK_GY_WLZZ Primary key(gysbh,bmdm)
);
注:下面两个表中的记帐年月为第一个表的zzly , /*记帐年月*/

我写了就是编译不过去,帮帮忙吧!
...全文
444 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingSunSha 2001-09-04
  • 打赏
  • 举报
回复
刚刚测试完,以上代码编译通过
zls0303 2001-09-04
  • 打赏
  • 举报
回复
下午有事,大家这么关心,不好意思,我要看一下子吧
KingSunSha 2001-09-04
  • 打赏
  • 举报
回复
对不起,刚才有点小错误, JZNY是DATE类型,所以可以这样
Insert into gy_wlmxz(wlzid,gysbh,bmdm,jzny,sqye,jzbz)
values (us_wlzid,us_gysbh,'03',to_date(as_jzny || '-01','yyyy-mm-dd'),un_qcyf,'0');
Insert into gy_wlzz(gysbh,bmdm,jzny,qcye,bqyf,bqfk,qmye)
values (us_gysbh,'03',to_date(as_jzny || '-01','yyyy-mm-dd'),un_qcyf,'0.00','0.00',un_qcyf);

注意: 从页面上拷贝SQL段到你的编辑器中以后,把 || 改成正确的字符, 因为网站会自动转换这个代码
xzou 2001-09-04
  • 打赏
  • 举报
回复
按我看来,你首先要把as_jzny 类型说清楚,我看好像是char
这样的话你要改写下面的语句
Insert into gy_wlmxz(wlzid,gysbh,bmdm,jzny,sqye,jzbz) values (us_wlzid,us_gysbh,'03',to_char(as_jzny¦¦'-01','yyyy-mm-dd'),un_qcyf,'0');
Insert into gy_wlzz(gysbh,bmdm,jzny,qcye,bqyf,bqfk,qmye) values (us_gysbh,'03',to_char(as_jzny¦¦'-01','yyyy-mm-dd'),un_qcyf,'0.00','0.00',un_qcyf);
KingSunSha 2001-09-04
  • 打赏
  • 举报
回复
up_gy_wlzid(us_wlzid); --这句我没法调试

2句INSERT 有问题, 是||而不是¦¦, 改成这样就通过调试了
Insert into gy_wlmxz(wlzid,gysbh,bmdm,jzny,sqye,jzbz)
values (us_wlzid,us_gysbh,'03',to_char(to_date(as_jzny || '-01','yyyy-mm-dd'),'yyyy-mm-dd'),un_qcyf,'0');
Insert into gy_wlzz(gysbh,bmdm,jzny,qcye,bqyf,bqfk,qmye)
values (us_gysbh,'03',to_char(to_date(as_jzny || '-01','yyyy-mm-dd'),'yyyy-mm-dd'),un_qcyf,'0.00','0.00',un_qcyf);

试试吧, 有什么问题把错误信息一起贴出来
xzou 2001-09-04
  • 打赏
  • 举报
回复
报的什么错误?
Select nvl(qcyf,0) into un_qcyf from gy_qcwlz where gysbh = us_gysbh and to_char(zzly,'yyyy-mm') = as_jzny and jz = '1';
你这句话首先要能保证每次都可以取到唯一的值。先把错误贴出来好看
zls0303 2001-09-04
  • 打赏
  • 举报
回复
/*****************************************************************************************
* 期初往来帐存贮过程 *
*****************************************************************************************/

Create Or Replace Procedure up_gy_qcwlz (as_jzny varchar)

/****************************************************************************************
* 功能:将期初往来帐数据插入到gy_wlmxz,gy_wlzz 作为期初余额
* 参数1:期初往来帐的年月 yyyy-mm
****************************************************************************************/
AS
us_gysbh varchar(20); /*供应商编号*/
un_qcyf number; /*期初应付款*/
us_wlzid varchar(8); /*往来帐流水号*/

Cursor my_cursor is Select distinct gysbh from gy_qcwlz
where to_char(zzly,'yyyy-mm') = as_jzny;

Begin
Open my_cursor;
Loop
Fetch my_cursor Into us_gysbh;
Exit When my_cursor%notfound;
Select nvl(qcyf,0) into un_qcyf from gy_qcwlz where gysbh = us_gysbh and to_char(zzly,'yyyy-mm') = as_jzny and jz = '1';
up_gy_wlzid(us_wlzid);
Insert into gy_wlmxz(wlzid,gysbh,bmdm,jzny,sqye,jzbz) values (us_wlzid,us_gysbh,'03',to_char(as_jzny||'-01','yyyy-mm-dd'),un_qcyf,'0');
Insert into gy_wlzz(gysbh,bmdm,jzny,qcye,bqyf,bqfk,qmye) values (us_gysbh,'03',to_char(as_jzny||'-01','yyyy-mm-dd'),un_qcyf,'0.00','0.00',un_qcyf);
End Loop;
Close my_cursor;
End;
xzou 2001-09-04
  • 打赏
  • 举报
回复
贴出你的代码来
zls0303 2001-09-04
  • 打赏
  • 举报
回复
up
zls0303 2001-09-04
  • 打赏
  • 举报
回复
UP

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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