【100分求助】BCB+oracle数据库开发问题。
我用的是BCB6.0+oracle 9i。
我的环境是WIN2003服务器,客户端是XP。
使用ADO连接的,配置好了oracle客户端,也设置了用户和密码。
连接成功,也在操作中写入数据库指定表中了。
关键只是我的测试环境,根据用户的需求,他们的oracle数据库中有两个存储过程函数。
以前没用过oracle数据库,不知道这个存储过程函数怎么用,是我程序调用的,还是oracle数据库自己调用的?
如果是我程序调用,怎么用,它还有个返回值,这个返回值是怎么返回的,我程序如何知道呢??
大侠们帮忙,它的存储 过程函数还涉及其他数据表。
[解决办法]
VCL封装的ADO控件里有一个TADOStoredProc,就是用来调用存储过程的
[解决办法]
我这个里有个MS SQL 的例子你先看看 Oracle存储过程的语法略有不同 你改改就是了
/*在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