pro*c 动态sql一

2017-12-30 11:34:31来源:oschina作者:xiaomin0322人点击

分享
pro*c 动态sql一 博客分类: 数据库这种方法只能执行非查询语句,且在非查询动态SQL语句内不能包含输入宿主变量占位符。
这种方法使用EXECUTEIMMEDIATE命令立即执行动态SQL语句,所以在每次执行时,Oracle需要对语句进行重新解释。
如:

<连接数据库>
strcpy(str_sql,“DELETEFROMtest001WHEREname=’username’”);
OraclePro*C编程入门
EXECSQLEXECUTEIMMEDIATE:str_sql;
#include
#include
#include
#include
void connect();
void sql_err();
void dynamic_sqlone();
void main()
{
EXEC SQL WHENEVER SQLERRORDO sql_err();
connect();
dynamic_sqlone();
EXEC SQL COMMIT RELEASE;
}
void sql_err()
{
//printf("%.*s/n",sqlca.sqlerrm.sqlerrml,,sqlca.sqlerrm.sqlerrmc);
}
void connect()/*数据库连接-本地数据库,不添加server*/
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR oraCN[30];
EXEC SQL END DECLARE SECTION;
strcpy(oraCN.arr,"scott/Tiger@TEST_dist");
EXEC SQL CONNECT :oraCN;
}
void dynamic_sqlone()
{
EXEC SQL BEGIN DECLARE SECTION;
char sql_statement[100];
char control;
EXEC SQL END DECLARE SECTION;
for(;;)
{
printf("input the sqlstatement u want to execute:/n");
gets(sql_statement);
EXEC SQL EXECUTE IMMEDIATE :sql_statement;
printf("continue? (Y/N): ");
scanf("%c",&control);
getchar();
if(control=='N'||control=='n') break;
}
}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台