免费注册 查看新帖 |

Chinaunix

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

请教:ESQL/C 如何调用 存储过程?急,急,急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-15 09:42 |只看该作者 |倒序浏览
请教:返回多条记录的存储过程如何用ESQL/C语句编译返回多条记录,程序格式应该是怎么的?
谢谢各位了!谢谢!

存储过程例子:(ESQL/C 如何调用?)

drop procedure tmp;
create procedure tmp()
returning char(20),char(20),char(20);
define b char(20);
define c char(20);
define d char(20);
select * from sss  into temp tmp;
foreach select cust_no,cust_name,cust_str into b, c, d
from tmp
return b,c,d with resume;
end foreach;
end procedure

论坛徽章:
0
2 [报告]
发表于 2004-05-15 10:02 |只看该作者

请教:ESQL/C 如何调用 存储过程?急,急,急!

返回三条记录的ESQL/C  例子: (多条应该怎么写?)

#include        <stdio.h>;


EXEC SQL include sqlca;
EXEC SQL include sqlda;
EXEC SQL include datetime;

main()
{
        long char_num;
       
        EXEC SQL begin declare section;
                char         b[20];
                char         c[20];
                char         d[20];
        EXEC SQL end declare section;

       
        EXEC SQL database fzkser;
        EXEC SQL create procedure from 'pro3.sql';


        if( sqlca.sqlcode != 0 )
        {
                printf( "\nsqlca.sqlcode = %ld\n", sqlca.sqlcode );
       
        char_num = sqlca.sqlerrd[4];
                printf( "\nError in creating read_address.%ld\n", char_num );
        }

       
        EXEC SQL execute procedure tmp()
                into :b, :c, :d;

        if( sqlca.sqlcode != 0 )
        printf( "\nFailure on execute,sqlcode[%d]", sqlca.sqlcode );

        printf( "%s\n", b );
        printf( "%s\n", c );
        printf( "%s\n", d );

        EXEC SQL close database;

        return 0;


}

论坛徽章:
0
3 [报告]
发表于 2004-05-17 11:02 |只看该作者

请教:ESQL/C 如何调用 存储过程?急,急,急!

关注,我以前也碰到这种情况,我是先把返回记录插入到临时表中的

论坛徽章:
0
4 [报告]
发表于 2004-05-17 14:07 |只看该作者

请教:ESQL/C 如何调用 存储过程?急,急,急!

原帖由 "aragorn_coconut" 发表:
lca.sqlcode );

        printf( "%s\n", b );
        printf( "%s\n", c );
        printf( "%s\n", d );

        EXEC SQL close database;

        return 0;


}


用游标,如:
$prepare s_1 from "execute procedure  tmp() ";
$declare c_1 scroll cursor with hold for s_1;
$open c_1;
while(SQLCODE==0)
$fetch c_1 into :b, :c, :d;

论坛徽章:
0
5 [报告]
发表于 2004-05-17 14:31 |只看该作者

请教:ESQL/C 如何调用 存储过程?急,急,急!

原帖由 "aragorn_coconut" 发表:
lca.sqlcode );

        printf( "%s\n", b );
        printf( "%s\n", c );
        printf( "%s\n", d );

        EXEC SQL close database;

        return 0;


}


用游标,如:
$prepare s_1 from "execute procedure  tmp() ";
$declare c_1 scroll cursor with hold for s_1;
$open c_1;
while(SQLCODE==0)
$fetch c_1 into :b, :c, :d;

论坛徽章:
0
6 [报告]
发表于 2004-05-17 19:09 |只看该作者

请教:ESQL/C 如何调用 存储过程?急,急,急!

写通过了,用以下的方法:

EXEC SQL declare curss cursor for execute procedure tmp();

EXEC SQL open curss;

for( ; ; )
{
EXEC SQL fetch curss into :b, :c, :d;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP