oracle 存储过程执行错误(200)

  • 主题发起人 主题发起人 跳狗的墙墙
  • 开始时间 开始时间

跳狗的墙墙

Unregistered / Unconfirmed
GUEST, unregistred user!
create or replace procedure ENTERCLRK( RKDXH_ IN VARCHAR2, EXEC_OK IN OUT INTEGER, IS_SPECIAL IN NUMBER, RSZYXH_ IN NUMBER)is CLRKD_ROW WZGL.WZ_CLRKD%ROWTYPE; CLXH_ WZGL.WZ_CLRKDMX.CLXH%TYPE; ZRSL_ NUMBER(11,3) :=NULL; SRSL_ NUMBER(11,3):=NULL; PCH_ WZGL.WZ_CLRKDMX.PCH%TYPE; CLMX WZGL.WZ_CLBM%ROWTYPE; CLJG WZGL.WZ_JGTZ%ROWTYPE; CKDM_ WZGL.WZ_CKBMTZ.CKDM%TYPE:=NULL; SUM_KCSL NUMBER(11,3) :=NULL; CURSOR C1 IS SELECT * FROM WZGL.WZ_CLRKDMX WHERE RKDXH=RKDXH_ ;begin EXEC_OK:=0; SELECT * INTO CLRKD_ROW FROM WZGL.WZ_CLRKD WHERE XH=RKDXH_;--这第一步执行就直接跳异常了....请问这样有什么问题?前提:RKDXH_参数值WZGL.WZ_CLRKD表中有且只有一条...
 
问题补充:出错信息ora-01722 invalid number附带表字段信息XH NUMBER(15) N 序号DJBH VARCHAR2(20) Y 单据编号BMDM NUMBER(15) Y 填写部门TXR NUMBER(15) Y 填写人TXRQ DATE Y 填写日期HTXH NUMBER(15) Y 合同序号HTBH VARCHAR2(30) Y 合同编号SHTXD VARCHAR2(30) Y 随货同行单SE NUMBER(11,3) Y 税额BHSJE NUMBER(11,3) Y 不含税金额ZJE NUMBER(11,3) Y 不含费总金额FPH VARCHAR2(100) Y 发票号CGY NUMBER(15) Y 采购员HSY NUMBER(15) Y 核算员SHY NUMBER(15) Y 收货员RKLX NUMBER(15) Y 入库类型RKRQ DATE Y 入库日期SFZJJS NUMBER(1) Y 是否资金结算QYXH NUMBER(15) Y 供货单位序号QYMC VARCHAR2(100) Y 供货单位名称PCH VARCHAR2(20) Y 批次号SFRK NUMBER(1) Y 是否入库QTFY NUMBER(11,3) Y 其它费用DKL NUMBER(14,6) Y 抵扣率DKE NUMBER(11,3) Y 抵扣额HJJE NUMBER(11,3) Y 合计金额SFLW NUMBER(1) Y 是否两网LB NUMBER(15) Y 类别BZ VARCHAR2(4000) Y 备注ZT NUMBER(2) Y 状态RKXZ NUMBER(15) Y 入库性质ZHRQ DATE Y 入库类型转化日期TXRXM VARCHAR2(20) Y 填写人姓名SHRXM VARCHAR2(20) Y 收获人姓名SHR NUMBER(15) Y 审核人CGDXH NUMBER(15) Y 采购单序号TLDXH NUMBER(15) Y 退料单序号BFDXH NUMBER(15) Y 报废单序号KPRQ DATE Y 开票日期谢谢
 
SELECT * INTO CLRKD_ROW FROM WZGL.WZ_CLRKD WHERE XH=RKDXH_;不要用 *,要具体指定字段且这个字段的字段类型必须与 CLRKD_ROW 一致。
 
CLRKD_ROW WZGL.WZ_CLRKD%ROWTYPE;这是个变量
 
我当然知道 CLRKD_ROW 是变量。可是LZ却不明白!你要用类似 Select fieldname Into cr From ...的语句而不能用 Select * ....,你这样用 * 把表中所有的字段都选出来,系统到底把哪个值赋给变量呢?除非你的变量数、变量类型与字段数、字段类型一致,例如表A有3个字段,你可以这样:Select * Into va, vb, vc From A Where ...,希望你可以解决。
 
谢谢楼上的解答....但我就算只用一个字段.SELECT DJBH INTO DJBH_ FROM WZGL.WZ_CLRKD WHERE XH=RKDXH_错误信息也是一样的..
 
DJBH VARCHAR2(20) Y 单据编号你的 DJBH 是 字符型,那么你 Into 到的变量也必须是字符型,还有你的 Where 条件中的类型是否一致。
 
SELECT * INTO CLRKD_ROW FROM WZGL.WZ_CLRKD WHERE XH=RKDXH_;CLRKD_ROW 为量,不能是所有字段吧
 
把异常发出来看看啊问题应该就是楼上几位说的地方。inse 字段 最好不要用*
 
后退
顶部