我在vc++中用ado调用oracle数据库中的存储过程,但是只要存储过程中有pls_integer类型的参数,则不论我在vc++中使用什么类型的数据作为传递参数,都无法和pls_integer参数匹配,程序运行都会出错,但只要把存储过程的pls_integer参数改成integer类型的,就没有问题了,我想问有没有办法和pls_integer参数相匹配。谢谢帮助!

解决方案 »

  1.   

    pls_integer与int是不同的,pls是用于存储单字节整数,而int是Number类型的一个子类型,用来存储数字值,pls_integer要求存储长度低于NUMBER值。
      

  2.   

    我觉得那应该是你程序有问题,因为PLS_INTEGER是直接和操作系统C语言的类型对应的类型,对应关系如下:
    C语言类型                 PL/SQL 参数          PL/SQL 返回值 
    int                         IN PLS_INTEGER       PLS_INTEGER  
    int *                       IN OUT PLS_INTEGER   PLS_INTEGER   
    long int                    IN PLS_INTEGER       PLS_INTEGER  
    long int *                  IN OUT PLS_INTEGER   PLS_INTEGER  
    short                       IN PLS_INTEGER       PLS_INTEGER  
    short *                     IN OUT PLS_INTEGER   PLS_INTEGER  
      

  3.   

    现在csdn怎么不能提问啦!我想问oracle开发的问题:在oracle中插入一条记录时,触发器怎么能调用操作系统的命令呢?
      

  4.   

    请问楼主,我现在都海不知道怎么ADO中调用存储过程和触发器,能告诉一下吗?
    谢谢
      

  5.   

    一般的ADO调用procedure:
    .CommandText=Procedure
    .CommandName="ProcedureName"
    .Parameters一般2种写法: 一、.Parameters.Add(参数名,类型,长度) 
                             二、.Parameters.Name="Age"
                                 .Parameters.Direction="In" /"Out"...
                                 .Parameters.Value="25"