程序代码如下:#include <stdio.h> 
EXEC SQL INCLUDE SQLCA; 
void main() 

  
  EXEC SQL BEGIN DECLARE SECTION; 
  VARCHAR user[20],pass[20],tnsname[20],ename[20]; 
  int empno;
  float sal;
  EXEC SQL END DECLARE SECTION;  strcpy(user.arr,"scott"); 
  user.len=(unsigned short)strlen((char *)user.arr); 
  strcpy(pass.arr,"tiger"); 
  pass.len=(unsigned short)strlen((char *)pass.arr); 
  strcpy(tnsname.arr,"tulip"); 
  tnsname.len=(unsigned short)strlen((char *)tnsname.arr);   EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;   printf("Content-type: text/html\n\n"); 
  printf("<HTML>\n"); printf("<HEAD>\n"); 
  printf("<TITLE>Oracle ProC Test Page</TITLE>\n"); 
  printf("<style type='text/css'>\n"); 
  printf(".comm {font-size:10pt; font-family:verdana}\n"); 
  printf(".mainT{font-size:10pt; font-family:verdana;border:black solid;border-width:1 0 0 1}\n"); 
  printf(".commT{font-size:10pt; font-family:verdana;border:black solid;border-width:0 1 1 0}\n"); 
  printf("</style>\n"); 
  printf("</HEAD>\n"); 
  printf("<BODY>\n"); 
  EXEC SQL DECLARE emp_cursor CURSOR FOR  SELECT empno,ename,sal from emp; 
  EXEC SQL OPEN emp_cursor; 
  printf("<p class='comm'>Scott.emp's contents:<br></p>\n"); 
  printf("<table cellspacing='0' width='320' class=mainT>\n<tr>\n"); 
  printf("<td class='commT'>Empno</td>\n<td class='commT'>Ename</td><td class='commT'>Salary</td>\n</tr>\n"); 
  EXEC SQL WHENEVER NOT FOUND DO break; 
  printf("<tr>\n");   
  while(1) 
  { 
    EXEC SQL FETCH emp_cursor INTO :empno,:ename,:sal; 
    printf("<td class='commT'>%d</td><td class='commT'>%s</td><td class='commT'>%d</td></tr>\n",empno,ename,sal ); 
  } 
  printf("</tr>\n"); 
  printf("</table>\n"); 
  EXEC SQL CLOSE emp_cursor; 
  EXEC SQL COMMIT WORK RELEASE; 
  printf("</body></html>\n"); 
}在Windows下用Broland C++编译如下:
1:  proc PARSE=NONE example.c
2:bcc32 -o example example.c   c:\oracle\ora92\precomp\lib\orasql9.lib在第二步时出现错误如下:
Error: 'c:\oracle\ora92\precomp\lib\orasql9.lib' contains invalid OMF record,ttpe 0x21 (possibly COFF)麻烦高手门帮忙解决一下.

解决方案 »

  1.   

    麻烦看看下面Oracle的网络配置tnsnames.ora有什么错误?# TNSNAMES.ORA Network Configuration File: c:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
    # Generated by Oracle configuration tools.ROCK =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = rock)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = rock)
        )
      )INST1_HTTP =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = rock)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = SHARED)
          (SERVICE_NAME = MODOSE)
          (PRESENTATION = http://HRService)
        )
      )EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )在用Proc写程序连我本机Oracle数据库时总是报ORA-12154 TNS:Could not resolve service name错误,帮忙看看.
      

  2.   

    在VC上试过你的程序了,两个错误:
    1.少了几个库,
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    2.
    因为你的ename是VARCHAR型的,在
    printf("<td class='commT'>%d</td><td class='commT'>%s</td><td class='commT'>%d</td></tr>\n",empno,ename,sal ); 中,你应该用ename.arr.或者你把ename改成char型的。
    try again!