create procedure update_hme_tel()
define ccd_act char(18);
define hme_tel char(20);
declare c1 cursor
select ccd_act, hme_tel from act_hme_tel;
open c1
fetch next from c1 into ccd_act, hme_tel
select ccd_act, hme_tel into ccd_act, hme_tel from act_hme_tel;
update t_cc_ccd_cust set hme_tel= hme_tel
where ccd_act = ccd_act;
end procedure;
报201错误
------解决方案--------------------------------------------------------
你把4gl和SP搞混了。
------解决方案--------------------------------------------------------
供参考:
create procedure P_DealBankers()
RETURNING CHAR(255), CHAR(255);
DEFINE s_RespMsg CHAR(255);
DEFINE s_RespData CHAR(255);
DEFINE iSqlCode INTEGER;
DEFINE s_EntNo CHAR(10);
DEFINE s_TrDate CHAR(8);
DEFINE l_Serial INTEGER;
DEFINE s_DActNo CHAR(30);
DEFINE s_DCusName CHAR(60);
DEFINE s_DOpenBank CHAR(10);
DEFINE s_DBankName CHAR(60);
DEFINE s_CActNo CHAR(30);
DEFINE s_CCusName CHAR(60);
DEFINE s_COpenBank CHAR(10);
DEFINE s_CBankName CHAR(60);
LET iSqlCode = 0;
LET s_RespData = '';
LET s_EntNo = '';
LET s_TrDate = '';
LEt l_Serial = 0;
LET s_DActNo = '';
LET s_DCusName = '';
LET s_DOpenBank = '';
LET s_DBankName = '';
LET s_CActNo = '';
LET s_CCusName = '';
LET s_COpenBank = '';
LET s_CBankName = '';
FOREACH SELECT fc_DActNo, fc_CActNo, fc_TrDate, fi_Serial, fc_EntNo
INTO s_DActNo, s_CActNo, s_TrDate, l_Serial, s_EntNo
FROM TCAcctLst
WHERE fc_Flag = '1'
-- tcbtcustact无101账户
IF (s_DActNo[1,3] = '101' OR s_CActNo[1,3] = '101') THEN
CONTINUE FOREACH;
END If
SELECT DISTINCT A.fc_bankno, A.fc_cusname, B.fc_bankName
INTO s_DOpenBank, s_DCusName, s_DBankName
FROM tcbtcustact A, OUTER Tbanklst B
WHERE A.fc_newact = s_DActNo
AND A.fc_bankno = B.fc_bankNo;
let iSqlCode = DBINFO('sqlca.sqlerrd2');
IF (iSqlCode = 0) THEN
CONTINUE FOREACH;
END IF
UPDATE TCAcctLst
SET fc_dcusname = s_DCusName,
fc_dopenbank = s_DOpenBank,
fc_dbankname = s_DBankName,
fc_ccusname = s_CCusName,
fc_copenbank = s_COpenBank,
fc_cbankname = s_CBankName
WHERE fc_trdate = s_TrDate
AND fi_Serial = l_Serial
AND fc_entno = s_EntNo
AND fc_dactno = s_DActNo
AND fc_cactno = s_CActNo
;
END FOREACH
LET s_RespMsg='Response=00000|';
RETURN s_RespMsg, s_RespData;
END PROCEDURE;
------解决方案--------------------------------------------------------
declare c1 cursor
select ccd_act, hme_tel from act_hme_tel;
open c1
fetch next from c1 into ccd_act, hme_tel
这个是什么语法啊?
------解决方案--------------------------------------------------------
- SQL code
create procedure update_hme_tel()define ccd_act char(18);define hme_tel char(20);foreach select ccd_act, hme_tel into ccd_act ,hme_tel from act_hme_telupdate t_cc_ccd_cust set hme_tel= hme_telwhere ccd_act = ccd_act;end foreach;end procedure;