当前位置:  技术问答>linux和unix

如何在pro*c中调用存储过程

    来源: 互联网  发布时间:2015-02-02

    本文导语:  如何在pro*c中调用存储过程,和如何得到返回值 | 请看这个例子: /************************************************************* Sample Program 9:  Calling a stored procedure This program connects to ORACLE using the...

如何在pro*c中调用存储过程,和如何得到返回值

|
请看这个例子:

/*************************************************************
Sample Program 9:  Calling a stored procedure

This program connects to ORACLE using the SCOTT/TIGER
account.  The program declares several host arrays, then
calls a PL/SQL stored procedure (GET_EMPLOYEES in the
CALLDEMO package) that fills the table OUT parameters.  The
PL/SQL procedure returns up to ASIZE values.

Sample9 keeps calling GET_EMPLOYEES, getting ASIZE arrays
each time, and printing the values, until all rows have been
retrieved.  GET_EMPLOYEES sets the done_flag to indicate "no
more data."
*************************************************************/
#include 
#include 

EXEC SQL INCLUDE sqlca.h;


typedef char asciz[20];
typedef char vc2_arr[11];

EXEC SQL BEGIN DECLARE SECTION;
/* User-defined type for null-terminated strings */
EXEC SQL TYPE asciz  IS STRING(20) REFERENCE;

/* User-defined type for a VARCHAR array element. */
EXEC SQL TYPE vc2_arr IS VARCHAR2(11) REFERENCE;

asciz     username;
asciz     password;
int       dept_no;              /* which department to query? */
vc2_arr   emp_name[10];            /* array of returned names */
vc2_arr   job[10];
float     salary[10];
int       done_flag;
int       array_size;
int       num_ret;                 /* number of rows returned */
EXEC SQL END DECLARE SECTION;

long      SQLCODE;



void print_rows();            /* produces program output      */
void sql_error();             /* handles unrecoverable errors */



main()
{
   int   i;
   char  temp_buf[32];

/* Connect to ORACLE. */
   EXEC SQL WHENEVER SQLERROR DO sql_error();
   strcpy(username, "scott");
   strcpy(password, "tiger");
   EXEC SQL CONNECT :username IDENTIFIED BY :password;
   printf("nConnected to ORACLE as user: %snn", username);
   printf("Enter department number: ");
   gets(temp_buf);
   dept_no = atoi(temp_buf);/* Print column headers. */
   printf("nn");
   printf("%-10.10s%-10.10s%sn", "Employee", "Job", "Salary");
   printf("%-10.10s%-10.10s%sn", "--------", "---", "------");

/* Set the array size. */
   array_size = 10;

   done_flag = 0;
   num_ret = 0;

/*  Array fetch loop.
 *  The loop continues until the OUT parameter done_flag is set.
 *  Pass in the department number, and the array size--
 *  get names, jobs, and salaries back.
 */
   for (;;)
   {
      EXEC SQL EXECUTE 
         BEGIN calldemo.get_employees
            (:dept_no, :array_size, :num_ret, :done_flag,
             :emp_name, :job, :salary);
         END;
      END-EXEC;

      print_rows(num_ret);

      if (done_flag)
         break;
   }

/* Disconnect from the database. */
   EXEC SQL COMMIT WORK RELEASE;
   exit(0);
}
void
print_rows(n)
int n;
{
   int i;

    if (n == 0)
    {
        printf("No rows retrieved.n");
        return;
    }

    for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • Java远程方法调用框架 protobuf-rpc-pro
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing类jfilechooser的类成员方法: choosable_file_filter_changed_property定义及介绍
  • chmod u+s pro 使pro不能运行的问题
  • 有谁用过Search Maker pro 2.1并知道注册码?或能提供类似的软件.[Search Maker Pro可以自动搜索一个网站,对所有页面进行索引,然后生成
  • 静态反编译软件 IDA PRO
  • 要开发一个unix下Pro C谁有好书推荐几本
  • 数据操作工具 Datastream Pro
  • C/C++中嵌入SQL Pro*C
  • 求JPAD PRO的破解
  • Regress Pro
  • 关于JCreator Pro序列号
  • 谁有 JCreator Pro V2.5 的注册码?
  • 关于pro*c的初级问题
  • 提供一个jcreator pro 2.5下载的地方,需要的请看!(含注册码)
  • 谁有JCreator Pro V2.00 注册码
  • 谁能告诉我JCreator Pro的注册码?
  • pro* c问题?
  • 请问那里有关于Pro C的介绍??
  • 关于pro*c开发
  • PRO*C
  • JGraph Layout Pro
  • GUI设计器 WindowBuilder Pro


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3