hur.cn - 华软网

 热门搜索

更新数据库时,提示“无效列名”

  作者:未知    来源:网络    更新时间:2018/7/4
我用PB连接ORACLE更新数据库时提示“无效列名”
代码如下:
string ls_spell ,ls_errtext
 DECLARE cur_pym CURSOR FOR  
  SELECT "UNDRUG_INFO"."UNDRUG_CODE",   
         "UNDRUG_INFO"."UNDRUG_NAME",   
         "UNDRUG_INFO"."SPELL_CODE"  
    FROM "UNDRUG_INFO"  ;
OPEN cur_pym;
FETCH cur_pym INTO :ls_code,:ls_Name,:ldt_spell;


DO WHILE SQLCA.SqlCode = 0
ls_spell = upper(left(gf_mrm_hz_to_py(ls_Name,'F'),8))
MessageBox ("系统错误",ls_spell)
    UPDATE "HYHIS"."UNDRUG_INFO"  
     SET "SPELL_CODE" = ls_spell  
   WHERE "UNDRUG_INFO"."UNDRUG_CODE" = :ls_code   ;

        if sqlca.sqlnrows < 1 or sqlca.sqlcode <> 0 then 
ls_errtext = sqlca.sqlerrtext
rollback;
messagebox("错误","更新分类表失败!~n"+ls_errtext,stopsign!)
return -1
end if
FETCH cur_pym INTO :ls_code,:ls_Name,:ldt_spell;
LOOP
CLOSE cur_pym;
//if sqlca.sqlcode <> 0 then
MessageBox ("系统错误","转化成功...~n"+sqlca.sqlerrtext)
// return
//end if
//
再线等待

------华软网友回答------
UPDATE "HYHIS"."UNDRUG_INFO"  
     SET "SPELL_CODE" = :ls_spell  ------------------------
   WHERE "UNDRUG_INFO"."UNDRUG_CODE" = :ls_code   ;

------华软网友回复------
SELECT count("UNDRUG_CODE")   INTO :ls_count
             FROM "UNDRUG_INFO"  ;
这个对吗
------华软网友回复------
UPDATE "HYHIS"."UNDRUG_INFO"  
     SET "SPELL_CODE" = ls_spell  
   WHERE "UNDRUG_INFO"."UNDRUG_CODE" = :ls_code   ;
ls_spell前少了个冒号
------华软网友回复------
我的这个程序是循环修改一个表中的字段,但是最后不能提交,提示“过程没有执行,或没有结果返回”
哪位帮忙修改
 
     SET "SPELL_CODE" =  :ls_spell  
就是修改这个

------华软网友回复------
我已经修改成
for i=1 to ls_count step 1
FETCH cur_pym INTO :ls_code,:ls_Name,:ldt_spell;

  ls_spell = upper(left(gf_mrm_hz_to_py(ls_Name,'F'),8))
//MessageBox ("系统错误",ls_spell)
  
UPDATE "UNDRUG_INFO"  
     SET "SPELL_CODE" = :ls_spell  
   WHERE "UNDRUG_INFO"."UNDRUG_CODE" = :ls_code   ;

   if sqlca.sqlnrows < 1 or sqlca.sqlcode <> 0 then 
  ls_errtext = sqlca.sqlerrtext
rollback;
  messagebox("错误","更新分类表失败!~n"+ls_errtext,stopsign!)
return -1
   end if

next
但是还是不正确
不能提交
------华软网友回复------
UPDATE "UNDRUG_INFO"  
     SET "SPELL_CODE" = :ls_spell  
   WHERE "UNDRUG_INFO"."UNDRUG_CODE" = :ls_code   ;
jia shang -------------------
if  sqlcode = 100  then
            commit;
else
         rollback;
next

------华软网友回复------
UPDATE UNDRUG_INFO  
     SET SPELL_CODE = :ls_spell  
   WHERE UNDRUG_INFO.UNDRUG_CODE = :ls_code   ;
把双引号去掉。还有前面的最好也把双引号去掉。

if sqlca.sqlnrows < 1 or sqlca.sqlcode <> 0 then 
  ls_errtext = sqlca.sqlerrtext
rollback;
  messagebox("错误","更新分类表失败!~n"+ls_errtext,stopsign!)
return -1
elseif  sqlca.sqlcode = 0 then 
   commit;
   end if

     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。