DECLARE 
    iv_user_id    NUMBER(16):= TO_NUMBER(:USER_ID); 
BEGIN 
    :CODE          := -1; 
    :INFO          := 'TRADE OK!'; 
    FOR i IN (SELECT trade_id FROM tf_b_trade WHERE exec_time>SYSDATE AND user_id=iv_user_id AND trade_type_code IN (110,111)) LOOP 
    UPDATE tf_b_trade_svc 
    SET modify_tag='4' 
    WHERE trade_id=i.trade_id 
    AND service_id BETWEEN 13 AND 19; 
    END LOOP; 
    :CODE          := 0; 
END;
这是一个存储过程还是什么?程序结构

解决方案 »

  1.   

    这个应该是在C中用到的吧,是PRO*C
    是不能够直接调用的~
      

  2.   

    这不是SQL也不是存储过程,在oracle中没看见过。
      

  3.   

    pro*c 说白了就是C与SQL的结合
    有本书没记错应该叫《Oracle9i Pro*C/C++编程指南》(可能也有10g的)
    当时没买,全是借着看的,现在都忘了,这本书应该是写PRO*C挺全的,
    可能网上下不到电子的~~
      

  4.   

    好象变量定义不全,如果定义了完整的变量,在isqlplus中应该可以执行
      

  5.   

    应该是pro*c中的  要不变量前面不会加冒号
      

  6.   

    :USER_ID这应该是存储过程的外部参数
    这个游标在执行一个更新动作。:CODE 这个参数是传出参数。
    这个游标好像忘记关闭了。
      

  7.   

    迷糊了,想起来pro*c应该是有
    EXEC SQL 这样的语句,这个还不是~~
    不知道这断代码是做什么的~~,期待他人~
      

  8.   

    这是个存储过程 这个东西有两个参数 一个是:USER_IDf是个输入参数
    一个是:CODE是个输出参数这是ORCALE的语法。
    当然你也可以使用exec 语法去调用。但感觉没有必要。
      

  9.   

    pro*c,得进行编译以后才可以执行