嵌入式 SQL
定义
嵌入式SQL是将SQL嵌入到某一种高级语言之中,如C/C++,Java等 这种高级语言被称为宿主语言
特性
1.继承了高级语言的过程控制性
2.结合了SQL语言的复杂结果集操作的非过程性
3.为数据库操作者提供了安全可靠的操作方式:通过应用程序进行操作
ECPG
ECPG是PostgresSQL提供的,可在C语言中嵌套使用SQL语句的支持。ECPG-C的嵌套SQL编程一般要经过以下几个流程:
1.编写C语言有SQL混合的源代码文件(*.pgc)
2.使用ecpg预处理工具将.pgc转化为.c文件
3.编译/链接*.c文件生成可执行文件
如下图:
示例代码
EXEC SQL CONNECT TO testdb USER atlasdb;
EXEC SQL CREATE TABLE test1 (a int, b varchar(50));
EXEC SQL INSERT INTO test1(a,b) VALUES(:v1, 'test string');
转化后的C代码
{ ECPGconnect(__LINE__, 0, "testdb" , "atlasdb" , NULL , NULL, 1); }
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test1 ( a int , b varchar ( 50 ) )", ECPGt_EOIT, ECPGt_EORT);}
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test1 ( a , b ) values ( $1 , 'test string' )",
ECPGt_int,&(v1),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}
使用ecpg处理*.pgc文件的指令
ecpg -t -c -I/appdb/atlasdb/pg11/include/ example.sqc