1,178
社区成员
发帖
与我相关
我的任务
分享
--一个表
CREATE TABLE Book
(
ID NUMBER(10) NOT NULL PRIMARY KEY,
Chinese_Name varchar(200),
Englist_Name varchar(200)
)
--一个存储过程
create or replace procedure query_BOOK(bookID IN OUT NUMBER,MY_BOOK OUT VARCHAR2,MY_BOOK2 OUT VARCHAR2) is
begin
select ID , Chinese_Name, Englist_Name INTO bookID,MY_BOOK,MY_BOOK2 from BOOK where ID = bookID;
end query_BOOK;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int ID;
String str1;
String str2;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("query_BOOK 1, str1, str2");
ADOQuery1->Open();
ADOQuery1->First();
ID = ADOQuery1->FieldByName("ID")->AsInteger;
ShowMessage(ID);
}
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
String strSQL = String().sprintf(
TEXT("exec query_BOOK ")
TEXT("@bookID=:bookID OUTPUT,")
TEXT("@MY_BOOK=:MY_BOOK OUTPUT,")
TEXT("@MY_BOOK2=:MY_BOOK2 OUTPUT"));
ADOQuery1->SQL->Text = strSQL;
int nBookID = 123; // 赋个值
String str1, str2;
ADOQuery1->Parameters->Items[0]->Value = nBookID;
ADOQuery1->Parameters->Items[1]->Value = str1;
ADOQuery1->Parameters->Items[2]->Value = str2;
try
{
ADOQuery1->Open();
for (int i = 0; i < ADOQuery1->RecordCount; i++)
{
str1 = ADOQuery1->Parameters->Items[1]->Value;
str2 = ADOQuery1->Parameters->Items[2]->Value;
....
ADOQuery1->Next();
}
}
catch(...)
{
// query_BOOK 存储过程执行出错!
}