免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1343 | 回复: 8
打印 上一主题 下一主题

求教:ansi动态方法4动态选择列的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-05 16:45 |只看该作者 |倒序浏览
在运行程序时输入
select :a,:b from emp where empno=:c

输入 name,salary, 1 ,输出的时候并没有显示列的值,而是把name作为值输出了,形式如下,并没有取出实际的值
name,salary

相关代码如下:
void sql12da4()
{
        EXEC SQL ALLOCATE DESCRIPTOR 'input_descriptor';
        EXEC SQL ALLOCATE DESCRIPTOR 'output_descriptor';
        for(;
        {
                printf("please enter sql statement(exit:quit):";
                fflush(stdin);
                gets(sql_stat);
                if((strncmp(sql_stat,"exit",4)==0)||(strncmp(sql_stat,"EXIT",4)==0))
                        break;
                EXEC SQL PREPARE S FROM :sql_stat;
                EXEC SQL DECLARE C CURSOR FOR S;
                process_input();
                EXEC SQL OPEN C USING DESCRIPTOR 'input_descriptor';
                if((strncmp(sql_stat,"select",6)==0)||(strncmp(sql_stat,"SELECT",6)==0))
                        process_output();
                EXEC SQL CLOSE C;
        }
        EXEC SQL DEALLOCATE DESCRIPTOR 'input_descriptor';
        EXEC SQL DEALLOCATE DESCRIPTOR 'output_descriptor';
        puts("\n thank you for using ANSI DYNAMIC SQL 4";
}
void process_input()
{
        int i;
        EXEC SQL BEGIN DECLARE SECTION;
        char name[31];
        int input_count,input_len,occurs,ansi_varchar_type;
        char input_buf[200];
        EXEC SQL END DECLARE SECTION;
        EXEC SQL DESCRIBE INPUT S USING DESCRIPTOR 'input_descriptor';
        EXEC SQL GET DESCRIPTOR 'input_descriptor' :input_count=COUNT;
        ansi_varchar_type=12;
        for(i=0;i<input_count;i++)
        {
                occurs=i+1;
                EXEC SQL GET DESCRIPTOR 'input_descriptor' VALUE ccurs :name =NAME;
                printf("\nplease input %s\'s value",name);
                fflush(stdin);
                gets(input_buf);
                input_len=strlen(input_buf);
                input_buf[input_len]='\0';
                EXEC SQL SET DESCRIPTOR 'input_descriptor'
                VALUE ccurs TYPE =:ansi_varchar_type,LENGTH =:input_len,DATA=:input_buf;
        }
}
void process_output()
{
        int i;
        EXEC SQL BEGIN DECLARE SECTION;
        int output_count,occurs,type,len;short indi;
        char data[200],name[31];
        EXEC SQL END DECLARE SECTION;
        EXEC SQL DESCRIBE OUTPUT S USING DESCRIPTOR 'output_descriptor';
        EXEC SQL GET DESCRIPTOR 'output_descriptor' utput_count =COUNT;
        printf("\n";
        type=12;
        len=MAX_VAR_LEN;
        for(i=0;i<output_count;i++)
        {
                occurs=i+1;
                EXEC SQL SET DESCRIPTOR 'output_descriptor' VALUE ccurs TYPE=:type,LENGTH=:len;
                EXEC SQL GET DESCRIPTOR 'output_descriptor' VALUE ccurs :name =NAME;
                printf("\t%s",name);
        }
        printf("\n\n";
        EXEC SQL WHENEVER NOT FOUND DO break;
        for(;
        {
                EXEC SQL FETCH C INTO DESCRIPTOR 'output_descriptor';
                for(i=0;i<output_count;i++)
                {
                        occurs=i+1;
                        EXEC SQL GET DESCRIPTOR 'output_descriptor' VALUE ccurs :data =DATA,:indi = INDICATOR;
                        if(indi==-1)
                                printf("\t%s"," ";
                        else
                                printf("\t%s",data);
                }
                printf("\n";
        }
}

论坛徽章:
0
2 [报告]
发表于 2005-07-05 16:57 |只看该作者

求教:ansi动态方法4动态选择列的问题

11

论坛徽章:
0
3 [报告]
发表于 2005-07-05 17:16 |只看该作者

求教:ansi动态方法4动态选择列的问题

各位帮帮忙阿

论坛徽章:
0
4 [报告]
发表于 2005-07-05 18:39 |只看该作者

求教:ansi动态方法4动态选择列的问题

论坛徽章:
0
5 [报告]
发表于 2005-07-06 08:40 |只看该作者

求教:ansi动态方法4动态选择列的问题

论坛徽章:
0
6 [报告]
发表于 2005-07-06 09:51 |只看该作者

求教:ansi动态方法4动态选择列的问题

....

论坛徽章:
0
7 [报告]
发表于 2005-07-06 10:14 |只看该作者

求教:ansi动态方法4动态选择列的问题

顶一下

论坛徽章:
0
8 [报告]
发表于 2005-07-06 12:52 |只看该作者

求教:ansi动态方法4动态选择列的问题

走过路过的不要错过啊。。。。

论坛徽章:
0
9 [报告]
发表于 2005-07-06 16:42 |只看该作者

求教:ansi动态方法4动态选择列的问题

。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP