达梦(DM)数据库存储模块的调用

MoMo 2021年6月14日15:17:09
评论
82

存储模块的调用

调用存储模块的方法可以分为两种情况。

1. 立即调用

如果存储过程需要设置参数,那么在调用存储模块的时候就已经为所有的  ININOUT

类型的参数进行了赋值,带有 OUT 属性的参数的值是通过取得存储过程结果集的方法获取

的。立即执行存储过程的示例如下:

SQLExecDirect(hsmt,(SQLCHAR*)"call test_proc(123);",SQL_NTS);

2. 参数调用

这种调用方法指的是在调用模块的时候,其参数值用问号来代替,发送给服务器之后,

服务器返回参数的准备信息,用户依据服务器返回的参数描述信息进行参数绑定,然后执行,

其参数的处理方法与普通的参数处理方法相同。

DM 支持存储模块返回多个结果集的处理,多结果集的切换通过 SQLMoreResult 函数切

换,下面通过一个实例来说明如何使用。

#include <windows.h>

#include <stdio.h>

#include <sql.h>

#include <sqltypes.h>

#include <sqlext.h>

HENV env;

HDBC dbc;

HSTMT stmt;

RETCODEret;

short i;

short cols;

char   colname[129];

char   coldata[256];

void main(void)

{

SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env);

SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);

SQLConnect(dbc,   (SQLCHAR   *)"DM",   SQL_NTS,   (SQLCHAR   *)"SYSDBA",   SQL_NTS,   (SQLCHAR

*)"SYSDBA", SQL_NTS);

SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);

SQLExecDirect(stmt, (SQLCHAR *)"drop table test_table1;", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"drop table test_table2;", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"create table test_table1 (t1col int);", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"insert into test_table1 values(100);", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"create table test_table2 (t2col varchar(10));", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"insert into test_table2 values('hello!');", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"create or replace procedure test_proc as begin select * from

test_table1;select * from test_table2;end;", SQL_NTS);

SQLExecDirect(stmt, (SQLCHAR *)"call test_proc;", SQL_NTS);

SQLNumResultCols(stmt, &cols);

for (i=1; i<=cols; i++)

{

SQLDescribeCol(stmt, i, (SQLCHAR *)colname, 129, NULL, NULL, NULL, NULL, NULL);

printf("%s ", colname);

}

printf("\n");

for ( ; ; )

{

ret = SQLFetch(stmt);

if (ret == SQL_NO_DATA_FOUND) break;

for (i=1; i<=cols; i++)

{

SQLGetData(stmt, i, SQL_C_CHAR, coldata, 256, NULL);

printf("%s ", coldata);

}

printf("\n");

}

SQLMoreResults(stmt);

SQLNumResultCols(stmt, &cols);

for (i=1; i<=cols; i++)

{

SQLDescribeCol(stmt, i, (SQLCHAR *)colname, 129, NULL, NULL, NULL, NULL, NULL);

printf("%s ", colname);

}

printf("\n");

for ( ; ; )

{

ret = SQLFetch(stmt);

if (ret == SQL_NO_DATA_FOUND) break;

for (i=1; i<=cols; i++)

{

SQLGetData(stmt, i, SQL_C_CHAR, coldata, 256, NULL);

printf("%s ", coldata);

}

printf("\n");

}

SQLFreeHandle(SQL_HANDLE_STMT, stmt);

SQLDisconnect(dbc);

SQLFreeHandle(SQL_HANDLE_DBC, dbc);

SQLFreeHandle(SQL_HANDLE_ENV, env);

}
https://xpanx.com/
MoMo
  • 本文由 发表于 2021年6月14日15:17:09
  • 转载请务必保留本文链接:https://xpanx.com/2943.html
统信uos图片工具,看图工具 统信UOS操作系统

统信uos图片工具,看图工具

看图是一款小巧的图片查看应用软件。外观时尚、性能流畅,支持多种图片格随时想看 就看,实用又快捷。(如图 4.38 所示) 1.功能介绍 (1) 打开图片 采用以下任一方式打开图片。 1) 右击图片,选...
统信uos绘画工具 统信UOS操作系统

统信uos绘画工具

(1) 选择工具 选择图形绘制工具绘制图元后,可以进行以下操作: 1) 对已绘制图形、文字、模糊区域进行选择。 2) 支持框选,框选范围内的所有图形置为选择状态。 3) 在选择状态中的图形,拖拽调整图...
统信uos画板 统信UOS操作系统

统信uos画板

画板是一款简单的绘图工具,支持旋转、裁剪、翻转、添加文字、绘制形状等功能。您 可以对本地图片进行简单编辑,也可以绘制一张简单图片。(如图 4.24 所示)本节将介绍在 统信 UOS 操作系统环境下,对...
统信uos收发邮件 统信UOS操作系统

统信uos收发邮件

1.写邮件 在邮箱主界面,单击写邮件按钮 ,进入写邮件界面(如图 4.23 所示)。输入收件 人邮箱帐号,或单击 从通讯录添加收件人,还可以选择抄送或密送。邮件正文支持富文本 编辑,包括插入图片、链接...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: