示例:交互式 SQL 和等价的 DB2 UDB CLI 函数调用

示例:交互式 SQL 和等价的 DB2 UDB CLI 函数调用

此示例显示交互式 SQL 语句的执行,并遵循编写 DB2 UDB CLI 应用程序中描述的流程。

有关代码示例的信息,请参阅代码免责信息。

 

/*************************************************************************
** file = typical.c
**
** Example of executing interactive SQL statements, displaying result sets
** and simple transaction management.
**
**  Functions used:
**
**        SQLAllocConnect      SQLFreeConnect
**        SQLAllocEnv          SQLFreeEnv
**        SQLAllocStmt         SQLFreeStmt
**        SQLConnect           SQLDisconnect
**
**        SQLBindCol           SQLFetch
**        SQLDescribeCol       SQLNumResultCols
**        SQLError             SQLRowCount
**        SQLExecDirect        SQLTransact
**
**************************************************************************/
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "sqlcli.h"
 
#define MAX_STMT_LEN 255
#define  MAXCOLS   100
 
#define  max(a,b) (a > b ? a : b)
 
int initialize(SQLHENV *henv,
              SQLHDBC *hdbc);
 
int process_stmt(SQLHENV    henv,
                 SQLHDBC        hdbc,
                 SQLCHAR        *sqlstr);
 
int terminate(SQLHENV henv,
              SQLHDBC hdbc);
 
int print_error(SQLHENV    henv,
                SQLHDBC    hdbc,
                SQLHSTMT   hstmt);
 
int check_error(SQLHENV    henv,
                SQLHDBC    hdbc,
                SQLHSTMT   hstmt,
                SQLRETURN  frc);
 
void display_results(SQLHSTMT hstmt,
                     SQLSMALLINT nresultcols);
 
/*******************************************************************
** main
** - initialize
** - start a transaction
**   - get statement
**   - another statement?
** - COMMIT or ROLLBACK
** - another transaction?
** - terminate
*******************************************************************/
int main()
{
    SQLHENV         henv;
    SQLHDBC     hdbc;
    SQLCHAR     sqlstmt[MAX_STMT_LEN + 1]="";
    SQLCHAR     sqltrans[sizeof("ROLLBACK")];
    SQLRETURN       rc;
 
    rc = initialize(&henv, &hdbc);
    if (rc == SQL_ERROR) return(terminate(henv, hdbc));
 
    printf("Enter an SQL statement to start a transaction(or 'q' to Quit):\n");
        gets(sqlstmt);
 
    while (sqlstmt[0] !='q')
    {
        while (sqlstmt[0] != 'q')
        {   rc = process_stmt(henv, hdbc, sqlstmt);
            if (rc == SQL_ERROR) return(SQL_ERROR);
            printf("Enter an SQL statement(or 'q' to Quit):\n");
        gets(sqlstmt);
        }
 
        printf("Enter 'c' to COMMIT or 'r' to ROLLBACK the transaction\n");
        fgets(sqltrans, sizeof("ROLLBACK"), stdin);
 
        if (sqltrans[0] == 'c')
        {
          rc = SQLTransact (henv, hdbc, SQL_COMMIT);
          if (rc == SQL_SUCCESS)
            printf ("Transaction commit was successful\n");
            else
        check_error (henv, hdbc, SQL_NULL_HSTMT, rc);
        }
 
        if (sqltrans[0] == 'r')
        {
          rc = SQLTransact (henv, hdbc, SQL_ROLLBACK);
          if (rc == SQL_SUCCESS)
            printf ("Transaction roll back was successful\n");
            else
        check_error (henv, hdbc, SQL_NULL_HSTMT, rc);
        }
 
        printf("Enter an SQL statement to start a transaction or 'q' to quit\n");
        gets(sqlstmt);
    }
 
        terminate(henv, hdbc);
 
            return (SQL_SUCCESS);
}/* end main */
 
/*******************************************************************
** process_stmt
** - allocates a statement handle
** - executes the statement
** - determines the type of statement
**   - if there are no result columns, therefore non-select statement
**      - if rowcount > 0, assume statement was UPDATE, INSERT, DELETE
**   else
**      - assume a DDL, or Grant/Revoke statement
**   else
**      - must be a select statement.
**      - display results
** - frees the statement handle
*******************************************************************/
 
int process_stmt (SQLHENV    henv,
                       SQLHDBC        hdbc,
                  SQLCHAR    *sqlstr)
{
SQLHSTMT        hstmt;
SQLSMALLINT     nresultcols;
SQLINTEGER      rowcount;
    SQLRETURN       rc;
 
 
    SQLAllocStmt (hdbc, &hstmt);       /* allocate a statement handle */
 
    /* execute the SQL statement in "sqlstr"    */
 
    rc = SQLExecDirect (hstmt, sqlstr, SQL_NTS);
        if (rc != SQL_SUCCESS)
        if (rc == SQL_NO_DATA_FOUND) {
            printf("\nStatement executed without error, however,\n");
            printf("no data was found or modified\n");
            return (SQL_SUCCESS);
        }
            else
           check_error (henv, hdbc, hstmt, rc);
 
    SQLRowCount (hstmt, &rowcount);
    rc = SQLNumResultCols (hstmt, &nresultcols);
        if (rc != SQL_SUCCESS)
           check_error (henv, hdbc, hstmt, rc);
 
    /* determine statement type */
    if (nresultcols == 0) /* statement is not a select statement */
    {
        if (rowcount > 0 ) /* assume statement is UPDATE, INSERT, DELETE */
        {
            printf ("Statement executed, %ld rows affected\n", rowcount);
        }
      else  /* assume statement is GRANT, REVOKE or a DLL statement */
        {
              printf ("Statement completed successful\n");
        }
    }
    else /* display the result set */
    {
        display_results(hstmt, nresultcols);
    } /* end determine statement type */
 
    SQLFreeStmt (hstmt, SQL_DROP );       /* free statement handle */
 
    return (0);
}/* end process_stmt */
 
/*******************************************************************
** initialize
**  - allocate environment handle
**  - allocate connection handle
**  - prompt for server, user id, & password
**  - connect to server
*******************************************************************/
 
int initialize(SQLHENV *henv,
              SQLHDBC *hdbc)
{
SQLCHAR     server[18],
            uid[10],
            pwd[10];
    SQLRETURN       rc;
 
    rc = SQLAllocEnv (henv);         /* allocate an environment handle    */
        if (rc != SQL_SUCCESS )
            check_error (*henv, *hdbc, SQL_NULL_HSTMT, rc);
 
    rc = SQLAllocConnect (*henv, hdbc);  /* allocate a connection handle     */
        if (rc != SQL_SUCCESS )
            check_error (*henv, *hdbc, SQL_NULL_HSTMT, rc);
 
    printf("Enter Server Name:\n");
    gets(server);
    printf("Enter User Name:\n");
    gets(uid);
    printf("Enter Password Name:\n");
    gets(pwd);
 
    if (uid[0] == '\0')
    {   rc = SQLConnect (*hdbc, server, SQL_NTS, NULL, SQL_NTS, NULL, SQL_NTS);
        if (rc != SQL_SUCCESS )
            check_error (*henv, *hdbc, SQL_NULL_HSTMT, rc);
    }
            else
    {   rc = SQLConnect (*hdbc, server, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);
        if (rc != SQL_SUCCESS )
            check_error (*henv, *hdbc, SQL_NULL_HSTMT, rc);
    }
}/* end initialize */
 
/*******************************************************************
** terminate
**  - disconnect
**  - free connection handle
**  - free environment handle
*******************************************************************/
int terminate(SQLHENV henv,
              SQLHDBC hdbc)
{
    SQLRETURN       rc;
 
    rc = SQLDisconnect (hdbc);               /* disconnect from database  */
        if (rc != SQL_SUCCESS )
        print_error (henv, hdbc, SQL_NULL_HSTMT);
    rc = SQLFreeConnect (hdbc);              /* free connection handle    */
        if (rc != SQL_SUCCESS )
        print_error (henv, hdbc, SQL_NULL_HSTMT);
    rc = SQLFreeEnv (henv);                  /* free environment handle   */
        if (rc != SQL_SUCCESS )
        print_error (henv, SQL_NULL_HDBC, SQL_NULL_HSTMT);
 
}/* end terminate */
 
/*******************************************************************
** display_results - displays the selected character fields
**
**  - for each column
**      - get column name
**      - bind column
**  - display column headings
**  - fetch each row
**      - if value truncated, build error message
**      - if column null, set value to "NULL"
**      - display row
**      - print truncation message
**  - free local storage
**
*******************************************************************/
void display_results(SQLHSTMT hstmt,
                SQLSMALLINT nresultcols)
{
SQLCHAR         colname[32];
SQLSMALLINT     coltype[MAXCOLS];
SQLSMALLINT     colnamelen;
SQLSMALLINT     nullable;
SQLINTEGER      collen[MAXCOLS];
SQLSMALLINT     scale;
SQLINTEGER      outlen[MAXCOLS];
SQLCHAR *       data[MAXCOLS];
SQLCHAR         errmsg[256];
    SQLRETURN       rc;
SQLINTEGER      i;
SQLINTEGER      displaysize;
 
        for (i = 0; i < nresultcols; i++)
    {
        SQLDescribeCol (hstmt, i+1, colname, sizeof (colname),
        &colnamelen, &coltype[i], &collen[i], &scale, &nullable);
 
        /* get display length for column */
        SQLColAttributes (hstmt, i+1, SQL_DESC_PRECISION, NULL, 0     ,
            NULL, &displaysize);
 
        /* set column length to max of display length, and column name
           length.  Plus one byte for null terminator       */
        collen[i] = max(displaysize, collen[i]);
        collen[i] = max(collen[i], strlen((char *) colname) ) + 1;
 
        printf ("%-*.*s", collen[i], collen[i], colname);
 
        /* allocate memory to bind column                             */
        data[i] = (SQLCHAR *) malloc (collen[i]);
 
        /* bind columns to program vars, converting all types to CHAR */
        SQLBindCol (hstmt, i+1, SQL_C_CHAR, data[i], collen[i], &outlen[i]);
    }
    printf("\n");
 
    /* display result rows                                            */
    while ((rc = SQLFetch (hstmt)) != SQL_NO_DATA_FOUND)
    {
        errmsg[0] = '\0';
        for (i = 0; i < nresultcols; i++)
        {
            /* Build a truncation message for any columns truncated */
            if (outlen[i] >= collen[i])
            {    sprintf ((char *) errmsg + strlen ((char *) errmsg),
                          "%d chars truncated, col %d\n",
                           outlen[i]-collen[i]+1, i+1);
            }
            if (outlen[i] == SQL_NULL_DATA)
                printf ("%-*.*s", collen[i], collen[i], "NULL");
            else
                printf ("%-*.*s", collen[i], collen[i], data[i]);
        } /* for all columns in this row  */
 
        printf ("\n%s", errmsg);  /* print any truncation messages    */
    } /* while rows to fetch */
 
    /* free data buffers                                              */
        for (i = 0; i < nresultcols; i++)
    {
        free (data[i]);
    }
 
}/* end display_results
 
/*******************************************************************
** SUPPORT FUNCTIONS
**  - print_error   - call SQLError(), display SQLSTATE and message
**  - check_error     - call print_error
**                    - check severity of Return Code
**                    - rollback & exit if error, continue if warning
*******************************************************************/
 
/*******************************************************************/
int print_error (SQLHENV    henv,
                 SQLHDBC    hdbc,
                 SQLHSTMT   hstmt)
{
SQLCHAR     buffer[SQL_MAX_MESSAGE_LENGTH + 1];
SQLCHAR     sqlstate[SQL_SQLSTATE_SIZE + 1];
SQLINTEGER  sqlcode;
SQLSMALLINT length;
 
    while ( SQLError(henv, hdbc, hstmt, sqlstate, &sqlcode, buffer,
                     SQL_MAX_MESSAGE_LENGTH + 1, &length) == SQL_SUCCESS )
    {
        printf("\n **** ERROR *****\n");
        printf("         SQLSTATE: %s\n", sqlstate);
        printf("Native Error Code: %ld\n", sqlcode);
        printf("%s \n", buffer);
    };
    return;
}
 
/*******************************************************************/
int check_error (SQLHENV    henv,
                       SQLHDBC        hdbc,
                    SQLHSTMT      hstmt,
                 SQLRETURN  frc)
{
    SQLRETURN       rc;
 
    print_error(henv, hdbc, hstmt);
 
    switch (frc){
    case SQL_SUCCESS : break;
    case SQL_ERROR :
    case SQL_INVALID_HANDLE:
        printf("\n ** FATAL ERROR, Attempting to rollback transaction **\n");
        rc = SQLTransact(henv, hdbc, SQL_ROLLBACK);
        if (rc != SQL_SUCCESS)
            printf("Rollback Failed, Exiting application\n");
            else
            printf("Rollback Successful, Exiting application\n");
        terminate(henv, hdbc);
        exit(frc);
        break;
    case SQL_SUCCESS_WITH_INFO :
        printf("\n ** Warning Message, application continuing\n");
        break;
    case SQL_NO_DATA_FOUND :
        printf("\n ** No Data Found ** \n");
        break;
    default :
        printf("\n ** Invalid Return Code ** \n");
        printf(" ** Attempting to rollback transaction **\n");
        SQLTransact(henv, hdbc, SQL_ROLLBACK);
        terminate(henv, hdbc);
        exit(frc);
        break;
    }
    return(SQL_SUCCESS);
 
}
 

Labview及NI-USRP驱动安装教程 软件下载 安装使用的LabVIEW2018及NI-USRP驱动程序已上传,下载地址: 天翼云盘链接 (访问码:oc33) 百度网盘链接 (提取码:88mi) (注:天翼云盘下载不限速) LabVIEW2018安装步骤 右键软件压缩包选择解压至LabVIEW2018 选中文件,鼠标右击选择以管理员身份打开2018LV-WinChn.exe文件。 点击确定。 点击Unzip解压。 点击确定。 点击下一步。 填写任意信息后,点击下一步。 点击下一步。 点击浏览更改安装路径建议安装到除C盘以 阅读详情

相关推荐

构建自己的哨兵数据集(以sentinel-1为例,使用SNAP软件)

通过欧洲航天官网获取哨兵数据的产品,通过SNAP软件进一步得到SAR图像(以导出图片为例)

xiaoxTai的博客 6183

通过db2cli访问db2

#include"windows.h" #include"sql.h" #include"sqlext.h" #include"stdio.h" int main() { HMODULE db2cli; db2cli=LoadLibrary(“db2cli.dll”); if(db2cli==0){ printf(“load db2cli.dll fail\n”); return; } SQLRETURN (SQLAllocHandle) ( SQLSMALLINT HandleType,

lz280696516的博客 499

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

db2交互命令行提示符

db2set db2_clpprompt="(Instance:%i,Db:%d):"%ia 如果存在实例链接,则为当前实例链接的授权标识%i 如果存在实例链接,则为该实例的本地别名%da 如果存在数据库链接,则为当前数据库链接...

congchu6058的博客 232

IEEE论文投稿必看:PDF eXpress报错font not embedded的3种修复方法(附Adobe Acrobat DC操作截图)

本文针对IEEE论文投稿时PDF eXpress系统常见的“font not embedded”报错,提供了三种核心修复方案。首先,详细解析了使用Adobe Acrobat DC进行专业修复的完整操作流程与关键技巧。其次,介绍了无需付费软件的开源与免费工具链(如Ghostscript)解决方案。最后,从源头出发,指导LaTeX和Microsoft Word用户在生成PDF时正确设置以确保字体自动嵌入,帮助研究者彻底解决格式问题,确保投稿顺利。

ujm56789012的博客 516

零外围电路!用CH340X实现ESP32一键下载的完整教程

本文详细介绍了如何利用CH340X系列USB转串口芯片实现ESP32的一键自动下载功能,无需任何外围逻辑控制电路。通过解析CH340X的增强型DTR/RTS功能,提供核心电路设计、电压匹配方案,并指导在Arduino IDE和PlatformIO中进行软件配置,帮助开发者构建简洁、可靠且低成本的ESP32下载方案。

gpu4optimizer的博客 775

DB2 通用数据库 iSeries 版 SQL 调用层接口(ODBC)

DB2 通用数据库 iSeries 版 SQL 调用层接口(ODBC)   SQLPrepare — 准备语句   用途 SQLPrepare() 使 SQL 语句与输入语句句柄相关联并将该语句发送至 DBMS 以进行准备。应用程序可以通过将该语句句柄传送给其它函数来引用这个准备好的语句。 如果已将语句句柄与 SELECT 语句配合使用,则在调用 SQLPrepare() 之前,必须调用 SQ...

mlxia的专栏 409

某程token参数逆向分析

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

weixin_73499887的博客 2882

DB2 UDB V8.1管理学习笔记(二)

表空间类型分为SMS和DMS,分别是system management space, database management space. SMS使用方便,简单,无需手工创建和维护数据存储文件。DMS需要手动指定container和存储数据的文件名,并保证有足够磁盘空间可用。   对于一个数据库,至少存在一个page size为4K的系统临时表空间,可以额外建立具有更大page size的用户临时

寻秦记——刻下来的时光 1463

Unity之如何接入NPOI 快速读取Excel

NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目

TxNet 4396

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值)【含Matlab源码 4887期】

斑马算法优化变分模态分解ZOA-VMD数字信号去噪(优化K值 alpha值) 完整的代码,包运行;运行操作视频见优快云资源!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 811

学习笔记-DB2 UDB V8.1 管理 学习笔记(二)

版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。原文出处: http://www.aiview.com/notes/db2_note_2.htm作者: 张洋 Alex_doesAThotmail.com最后更新: 2004-8-5  目录 参考资源

DB2 学习笔记& 户外运动 1083

华为OD机试双机位C卷-部门人力分配 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【部门人力分配】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 部门人力分配。

qq_45776114的博客 1873

(转)SQL1092N "USER" does not have the authority to perform therequested command -

http://dbaspot.com/forums/db2-udb/203214-sql1092n-user-does-not-have-authority-perform-therequested-command.html SQL1092N "USER" does not have the authority to perform therequested command - ...

mlxia的专栏 1188

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

(转)DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011的原因及解决方法

http://blog.sina.com.cn/s/blog_4a3883790100qpqd.html DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011的原因及解决方法  (2011-04-06 11:43:36) 转载 标签:  db2   日志文件   数据库   杂谈 分类: 数据库 ...

mlxia的专栏 1157

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

(转)DB2中ALTER TABLE为什么需要REORG操作?

http://www.flatws.cn/article/program/db2/2011-05-04/24074.html DB2中ALTER TABLE为什么需要REORG操作? 减小字体 增大字体 ALTER TABLE操作在日常开发中很常见,下面是摘自DB2官网关于ALTER TABLE操作的一段话。 Perhaps the most important thing t...

mlxia的专栏 982

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

(转)用哪个DB2命令查看DB2 instance是启动还是停止的?

http://bbs.chinaunix.net/thread-1077564-1-1.html 1楼 发表于 2008-04-09 19:40 | 只看该作者   我知道可以用db2_ps命令列出DB2 的进程,但是有没有其他的命令能够直接给出"DB2 is started/alive" or "DB2 is down"这类信...

mlxia的专栏 939

(转)DB2解决“数据库日志已满”操作 SQLCODE=-964

http://www.db2china.net/club/thread-4244-1-1.html DB2解决“数据库日志已满”操作 SQLCODE=-964   2011-01-06 15:57:13|  分类: DB2|字号 订阅 日志文件需要更多空间,但是减少了应用程序重试该操作的需要。 若正在安装样本数据库,则删除它并再次安装样本数据库。 sq...

mlxia的专栏 801

(转)浅谈IBM DB2的数据库备份与恢复

http://bzhang.mild.blog.163.com/blog/static/84530533200891683845806/ 浅谈IBM DB2的数据库备份与恢复   2008-10-16 20:38:45|  分类: IT技术类|字号 订阅   一、 DB2 数据库备份的方式与分类 1.1 按照数据库备份对数据库的使用影响来划分 A、在线备...

mlxia的专栏 676

(转)DB2 and IBM's Processor Value Unit pricing

http://www.ibm.com/developerworks/data/library/techarticle/dm-0611zikopoulos2/?S_TACT=105AGX52&amp;S_CMP=DWCHINA DB2 and IBM's Processor Value Unit pricing   Paul Zikopoulos (paulz_ibm@msn.com...

mlxia的专栏 522

(转)DB2 数据类型

http://hi.baidu.com/uvvv/blog/item/79445e4e29f29600b3de05a0.html DB2 数据类型 2009/07/09 下午 03:23 1、概述                   DB2 提供了一套丰富且灵活的数据类型。DB2 附带 INTEGER、CHAR 和 DATE 等基本数据类型。它还提供了创建用户定义的数据类型(UD...

mlxia的专栏 465

DB2 UDB 连通性快捷表 第 4 部分

http://www.chinaitpower.com/A200508/2005-08-08/186502.html   Raul F. Chong, 数据库顾问, IBMJalud Abdulmenan, 数据库顾问2004 年 3 月 本文的焦点是使用 C 和 Java 语言讨论工作站上的 DB2 UDB 应用程序开发的连通性。 简介这是第四篇讨论连通性应用场景的文章,其中包括 IBM® D...

mlxia的专栏 447

(转)哪一个分布式 DB2 9.5 版本适合您?

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0611zikopoulos/ 哪一个分布式 DB2 9.5 版本适合您? 文档选项 &lt;script type="text/javascript"&gt;&lt;/script&gt; 打印本页...

mlxia的专栏 406

(转)DB2 9 中基于字符的字符串函数

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0705nair/index.html?S_TACT=105AGX52&amp;S_CMP=tut-cto DB2 9 中基于字符的字符串函数 在代码中使用 CODEUNITS Kiran Nair (kiranhariharan@in...

mlxia的专栏 384

(转)Processor Value Unit [PVU] licensing for Distributed Software

http://www-01.ibm.com/software/lotus/passportadvantage/pvu_licensing_for_customers.html Processor Value Unit [PVU] licensing for Distributed Software Updated June 22, 2009 &lt;!--TITLE_END--&gt;&lt...

mlxia的专栏 371

(转)DB2 sqlstate 57016 原因码 "7"错误详解

http://www.db2china.net/club/viewthread.php?tid=6035 [基础知识] DB2 sqlstate 57016 原因码 "7"错误详解 DB2, DB2调优sqlstate, 详解, quot 对表进行任何操作都不被允许,提示SQLSTATE=57016 SQLCODE=-668 ,原因码 "7"的错误:SQL0668N ...

mlxia的专栏 358
上一篇: DB2 通用数据库 iSeries 版 SQL 调用层接口(ODBC)
下一篇: 一步一学Linux与Windows 共享文件Samba (v0.2b)
mlxia
博客等级 码龄26年 28粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值