Informix ESQL/C编程

ESQL/C Documents

https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.esqlc.doc/esqlc.htm

http://www.gbase.cn/images/new/esqlc/index.html#esqlc.html

转载https://blog.csdn.net/liangyuannao/article/details/8166914

ESQL/C程序

ESQL(Embedded SQL),是嵌入式SQL的简称。嵌入式SQL语言就是将SQL语句直接嵌入到程序的源代码中,与其他程序设计语言语句混合。专用的SQL预编译程序将嵌入的SQL语句转换为能被程序设计语言(如C语言)的编译器识别的函数调用。然后,C编译器编译源代码为可执行程序。

ESQL/C是应用开发工具,是C程序员用于访问Informix数据库的接口。ESQL/C程序文件的后缀名为.ec,即“*.ec”。

Informix ESQL/C示例程序:$INFORMIXDIR/demo/esqlc/demo1.ec

/****************************************************************************
 * Licensed Material - Property Of IBM
 *
 * "Restricted Materials of IBM"
 *
 * IBM Informix Client SDK
 *
 * (c)  Copyright IBM Corporation 1997, 2013. All rights reserved.
 *
 ****************************************************************************
 */


#include 

EXEC SQL define FNAME_LEN	15;
EXEC SQL define LNAME_LEN	15;

main()
{
EXEC SQL BEGIN DECLARE SECTION;
    char fname[ FNAME_LEN + 1 ];
    char lname[ LNAME_LEN + 1 ];
EXEC SQL END DECLARE SECTION;

    printf( "DEMO1 Sample ESQL Program running.\n\n");
    EXEC SQL WHENEVER ERROR STOP;
    EXEC SQL connect to 'stores_demo';

    EXEC SQL declare democursor cursor for
	select fname, lname
	   into :fname, :lname
	   from customer
	   where lname < "C";

    EXEC SQL open democursor;
    for (;;)
	{
	EXEC SQL fetch democursor;
	if (strncmp(SQLSTATE, "00", 2) != 0)
	    break;

	printf("%s %s\n",fname, lname);
	}

    if (strncmp(SQLSTATE, "02", 2) != 0)
        printf("SQLSTATE after fetch is %s\n", SQLSTATE);

    EXEC SQL close democursor;
    EXEC SQL free democursor;

    EXEC SQL disconnect current;
    printf("\nDEMO1 Sample Program over.\n\n");

   exit(0);
}

静态SQL和动态SQL

    嵌入式SQL语言,分为静态SQL语言和动态语言两类。
       静态SQL语言,就是在编译时已经确定了引用的表和列。宿主变量不改变表和列信息。可以使用主变量改变查询参数值,但是不能用主变量代替表名或列名。
  动态SQL语言,就是不在编译时确定SQL的表和列,而是让程序在运行时提供,并将SQL语句文本传给DBMS执行。静态SQL语句在编译时已经生成执行计划。而动态SQL语句,只有在执行时才产生执行计划。动态SQL语句首先执行PREPARE语句要求DBMS分析、确认和优化语句,并为其生成执行计划。DBMS还设置SQLCODE以表明语句中发现的错误。当程序执行完“PREPARE”语句后,就可以用EXECUTE语句执行执行计划,并设置 SQLCODE,以表明完成状态。

ESQL/C编译

ESQL/C编译方式一:链接共享通用库

export LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:/usr/lib

esql -o demo1 demo1.ec

ESQL/C编译方式二:链接静态通用库

esql -static -o demo1 demo1.ec

ESQL/C运行

1.运行可执行程序demo1之前,要先创建相关的数据库和表,即创建informix的示例库表

cd $INFORMIXDIR/demo/dbaccess

mkdir demo1

在demo1目录下,执行dbaccessdemo后,默认创建名为stores_demo的数据库

2.使用./命令执行ESQL/C的可执行文件,运行ESQL

./demo1

你可能感兴趣的:(Informix)