我现在使用ADO(VC)调用一个存储过程,
CREATE PROCEDURE p_GetImport
(
@id int = 1
)
AS
SELECT * from table1 where id= @id
RETURN 0
GO
我可以忽略这个参数吗?我可以告诉ADO我将使用缺省参数吗?
在查询分析器中,我可以这样
EXEC @RC = p_GetImport DEFAULT
或
EXEC @RC = p_GetImport
在VC6 程序中如何实现
CREATE PROCEDURE p_GetImport
(
@id int = 1
)
AS
SELECT * from table1 where id= @id
RETURN 0
GO
我可以忽略这个参数吗?我可以告诉ADO我将使用缺省参数吗?
在查询分析器中,我可以这样
EXEC @RC = p_GetImport DEFAULT
或
EXEC @RC = p_GetImport
在VC6 程序中如何实现
解决方案 »
- 我定义CSplitButton m_spBtnNew变量总是提示未定义的标识符,我添加了下面两个头文件仍旧不可以,为什么呢?
- 一个关于控件改变位置的问题
- 向高手请教OLEDB数据库编程问题!
- 如何实现TestDirector那种SnapShot?(把鼠标拖到某个程序的控件上,即可选中该控件并拍照)
- 用Timer滚动文字怎样防止闪烁
- 问一下,有不堵塞消息的sleep函数相关吗?
- 急★★★请帮忙,那位大侠知道在哪儿下载Delphi控件DBGridR(★★★不是DBgrid★★★)
- 请教输入法编程调试
- 为什么用malloc分配的内存块无法释放??
- 为何我能在局蜮网中ping不到192.168.0.1,而它却能ping 到我何为?
- 与数据库连接前,我用AfxOleInit()进行初始化,可是运行时提示出错,请问各位是哪里错了呢?谢谢
- vc++ 与SQL SERVER 数据库MIS 软件报表生成时如何减少生成时间问题
VOID PrintProviderError(_ConnectionPtr pConnection)
{
// Print Provider Errors from Connection object.
// pErr is a record object in the Connection's Error collection.
ErrorPtr pErr = NULL;
long nCount = 0;
long i = 0; if( (pConnection->Errors->Count) > 0)
{
nCount = pConnection->Errors->Count;
// Collection ranges from 0 to nCount -1.
for(i = 0; i < nCount; i++)
{
pErr = pConnection->Errors->GetItem(i);
printf("\n\t Error number: %x\t%s", pErr->Number, (LPCSTR)pErr->Description);
}
}
}
/*
CREATE PROCEDURE "ONEGA"."TestProc1"
(
p_out OUT numeric,
p_id IN numeric DEFAULT 1
)
IS
BEGIN
p_out:= p_id + 1234;return;
END ;
*/
int main(int argc, char* argv[])
{
printf("Use ADO to open Oracle!\n");
CoInitialize(NULL);
_ConnectionPtr pConn("ADODB.Connection");
try
{
_CommandPtr Cmd1;
Cmd1.CreateInstance( __uuidof( Command ) );
_ParameterPtr outParam=NULL;
_RecordsetPtr pRst("ADODB.Recordset");
pConn->Open("Provider=OraOLEDB.Oracle;Data Source=workdb;User Id=Onega;Password=sa;"
,"","",adConnectUnspecified);
Cmd1->ActiveConnection = pConn;
Cmd1->CommandText = "{call ONEGA.TestProc1( ?)}";
Cmd1->CommandType = adCmdText;
outParam = Cmd1->CreateParameter("p_out",adInteger,adParamOutput,sizeof(int));
Cmd1->Parameters->Append(outParam);
Cmd1->Execute(NULL,NULL,adExecuteNoRecords);
long p2=Cmd1->Parameters->Item["p_out"]->Value;
printf("p2= %d,\n",p2);
pConn->Close();
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\nCOM error occurred, Source : %s \n Description : %s \n",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
PrintProviderError(pConn);
}
::CoUninitialize();
printf("program end.\n");
return 0;
}