首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

【100分】BCB+oracle数据库开发有关问题

2013-03-26 
【100分求助】BCB+oracle数据库开发问题。我用的是BCB6.0+oracle 9i。我的环境是WIN2003服务器,客户端是XP。使

【100分求助】BCB+oracle数据库开发问题。
我用的是BCB6.0+oracle 9i。
我的环境是WIN2003服务器,客户端是XP。
使用ADO连接的,配置好了oracle客户端,也设置了用户和密码。
连接成功,也在操作中写入数据库指定表中了。

关键只是我的测试环境,根据用户的需求,他们的oracle数据库中有两个存储过程函数。

以前没用过oracle数据库,不知道这个存储过程函数怎么用,是我程序调用的,还是oracle数据库自己调用的?

如果是我程序调用,怎么用,它还有个返回值,这个返回值是怎么返回的,我程序如何知道呢??
大侠们帮忙,它的存储 过程函数还涉及其他数据表。

[解决办法]
VCL封装的ADO控件里有一个TADOStoredProc,就是用来调用存储过程的
[解决办法]
我这个里有个MS SQL 的例子你先看看 Oracle存储过程的语法略有不同 你改改就是了

C/C++ code
/*在SQLServer中建立存储过程--DROP PROCEDURE Test;CREATE PROCEDURE Test  @aa VARCHAR(15),  @bb INT,  @cc VARCHAR(15) OUTPUT,  @dd INT OUTPUTAS BEGIN  SELECT @cc=UPPER(@aa)  PRINT @cc  SELECT @dd=@bb+1  PRINT @dd   RETURNEND*/    //c 和 d为输出的参数   AnsiString  ls_One =  "Wen Juan" ;   int a = 888 ;   AnsiString ls_Exec =AnsiString().sprintf("exec Test '%s',%d, :c output,\                       :d output",ls_One.c_str(),a);   ADOQuery1->Close();   ADOQuery1->SQL->Clear();   ADOQuery1->SQL->Add(ls_Exec);   ADOQuery1->ExecSQL() ;   ShowMessage(ADOQuery1->Parameters->ParamByName("c")->Value);   ShowMessage(ADOQuery1->Parameters->ParamByName("d")->Value);
[解决办法]
看我回过的:
oracle存储过程
http://topic.csdn.net/t/20061124/10/5181888.html
oracle函数
http://topic.csdn.net/u/20090922/22/8c1dedb7-a755-47cb-9d7e-10ccd0bff78d.html

[解决办法]
是我程序调用,TADOStoredProc,就是用来调用存储过程的。

TStoredProc *StoredProc1;
StoredProc1 = new TStoredProc(NULL);

StoredProc1->DatabaseName="databasename";
StoredProc1->StoredProcName="dbo.P_GETDJH";

StoredProc1->Params->CreateParam(ftString, "@ZMDM", ptInput);
StoredProc1->Params->CreateParam(ftString, "@DJLB", ptInput);
StoredProc1->Params->CreateParam(ftString, "@DJLB_B", ptInput);
StoredProc1->Params->CreateParam(ftInteger, "@DJH_N", ptOutput);
StoredProc1->Params->CreateParam(ftString, "@DJH_s", ptOutput);

StoredProc1->ParamByName("@ZMDM")->AsString=ZMDM;
StoredProc1->ParamByName("@DJLB")->AsString=DJLB;
StoredProc1->ParamByName("@DJLB_B")->AsString=DJLB_B;
try
{
StoredProc1->ExecProc();
}
catch(Exception * mye)
{
ErrorBox(mye->Message.c_str());
delete StoredProc1;
return "";
}

我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html

热点排行