报错如下:
1>------ 已启动生成: 项目: ProcTest, 配置: Debug Win32 ------
1>正在链接...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>C:\Users\PCW\Documents\Visual Studio 2008\Projects\ProcTest\Debug\ProcTest.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://c:\Users\PCW\Documents\Visual Studio 2008\Projects\ProcTest\ProcTest\Debug\BuildLog.htm”
1>ProcTest - 2 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
Oracle 10g Proc+VS2008开发环境搭建严格按照如下所述的(其中编译生成C源文件):
http://blog.csdn.net/ishow99/article/details/4922148
.pc源代码如下:
#include <stdio.h>
/* 说明段,说明SQL变量 */
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
EXEC SQL END DECLARE SECTION;/* SQL通讯区说明 */
EXEC SQL INCLUDE sqlca;/* C函数说明,错误处理 */
void sqlerror();
/* 程序体 */
main()
{
/************ 内部说明部 ***********/ /* 内部说明段,说明局部SQL变量 */
EXEC SQL BEGIN DECLARE SECTION;
int emp_number;
VARCHAR emp_name[15];
float salary;
float commission;
EXEC SQL END DECLARE SECTION;
/* C变量说明 */
int total_number; /* 登录到ORACLE*/
strcpy(username.arr, "scott"); /* 用户名 */
username.len = strlen(username);
strcpy(password.arr, "tiger"); /* 口令 */
password.len = strlen(password.arr); EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* 错误处理说明语句 */
EXEC SQL CONNECT :username IDENTIFIED BY : password;
/* 连接到oracle */ printf("\nConnect to ORACLE as user:%s\n",username.arr); /* 循环查询职员信息 */
total_number = 0; while(1)
{
emp_number = 0;
printf("\nEnter employee number(0 to quit):");
scanf("%d", &emp_number);
if (emp_number == 0)
break;/* 查询语句 */
EXEC SQL WHENEVER NOT FOUND GOTO notfound;
EXEC SQL SELECT ENAME, SAL, COMM
INTO :emp_name, :salary, :commission
FROM EMP
WHERE EMPNO = :emp_number;/* 输出查询结果 */
printf("\n\nEmployee\tSalary\tCommission\n");
printf("------------\t-----------\t---------------\n");
emp_name.arr[emp_name.len] = '\0';
printf("%-8s\t%6.2f\t%6.2f\n",emp_name.arr, salary,commission);
total_number = total_number+1;
continue;
notfound:
printf("\nNot a valid employee number - try again.\n");
} printf("\n\nTotal number queried was:%d\n",total_number);
printf("\n\nHave a good day.\n"); /* 结束处理,退出ORACLE系统 */
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}/* 错误处理 */
void sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\nORACLE error detected:\n"); /* 打印错误文本 */
printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc); /* 回滚事务 */
EXEC SQL ROLLBACK RELEASE;
exit(1);
}
1>------ 已启动生成: 项目: ProcTest, 配置: Debug Win32 ------
1>正在链接...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>C:\Users\PCW\Documents\Visual Studio 2008\Projects\ProcTest\Debug\ProcTest.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://c:\Users\PCW\Documents\Visual Studio 2008\Projects\ProcTest\ProcTest\Debug\BuildLog.htm”
1>ProcTest - 2 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
Oracle 10g Proc+VS2008开发环境搭建严格按照如下所述的(其中编译生成C源文件):
http://blog.csdn.net/ishow99/article/details/4922148
.pc源代码如下:
#include <stdio.h>
/* 说明段,说明SQL变量 */
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
EXEC SQL END DECLARE SECTION;/* SQL通讯区说明 */
EXEC SQL INCLUDE sqlca;/* C函数说明,错误处理 */
void sqlerror();
/* 程序体 */
main()
{
/************ 内部说明部 ***********/ /* 内部说明段,说明局部SQL变量 */
EXEC SQL BEGIN DECLARE SECTION;
int emp_number;
VARCHAR emp_name[15];
float salary;
float commission;
EXEC SQL END DECLARE SECTION;
/* C变量说明 */
int total_number; /* 登录到ORACLE*/
strcpy(username.arr, "scott"); /* 用户名 */
username.len = strlen(username);
strcpy(password.arr, "tiger"); /* 口令 */
password.len = strlen(password.arr); EXEC SQL WHENEVER SQLERROR DO sqlerror();
/* 错误处理说明语句 */
EXEC SQL CONNECT :username IDENTIFIED BY : password;
/* 连接到oracle */ printf("\nConnect to ORACLE as user:%s\n",username.arr); /* 循环查询职员信息 */
total_number = 0; while(1)
{
emp_number = 0;
printf("\nEnter employee number(0 to quit):");
scanf("%d", &emp_number);
if (emp_number == 0)
break;/* 查询语句 */
EXEC SQL WHENEVER NOT FOUND GOTO notfound;
EXEC SQL SELECT ENAME, SAL, COMM
INTO :emp_name, :salary, :commission
FROM EMP
WHERE EMPNO = :emp_number;/* 输出查询结果 */
printf("\n\nEmployee\tSalary\tCommission\n");
printf("------------\t-----------\t---------------\n");
emp_name.arr[emp_name.len] = '\0';
printf("%-8s\t%6.2f\t%6.2f\n",emp_name.arr, salary,commission);
total_number = total_number+1;
continue;
notfound:
printf("\nNot a valid employee number - try again.\n");
} printf("\n\nTotal number queried was:%d\n",total_number);
printf("\n\nHave a good day.\n"); /* 结束处理,退出ORACLE系统 */
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}/* 错误处理 */
void sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\nORACLE error detected:\n"); /* 打印错误文本 */
printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc); /* 回滚事务 */
EXEC SQL ROLLBACK RELEASE;
exit(1);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货