vc里调用sqlserver存储过程如何调用

luh 2003-08-23 04:43:01
我的代码是这样
::CoInitialize(NULL);
_ConnectionPtr pConn;
pConn.CreateInstance(_uuidof(Connection));
pConn->Open("Provider = LOLEDB.1;
InitialCatalog=aa;
DataSource=201.123.133.123",
"sa","",adOpenUnspecified);
pConn->Execute(proc(a,b),0,adCmdUnknown);

是这样的,a 是输入参数,
b是输出参数
我这段语法不知道怎么写
我想得到b得值

没有输出参数的情况下是能调用的

...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luh 2003-08-23
  • 打赏
  • 举报
回复
我现在代码

::CoInitialize(NULL);
_ConnectionPtr pConn;
pConn.CreateInstance(_uuidof(Connection));
pConn->Open("Provider = SQLOLEDB.1;Initial Catalog=sql;
Data Source=201.123.133.123","sa" ,"",
adOpenUnspecified);

_CommandPtr Cmd1;
_RecordsetPtr Rs1;
_variant_t Final;

Cmd1.CreateInstance( __uuidof( Command ) );
Cmd1->ActiveConnection = pConn;
Cmd1->CommandText = _bstr_t(L"sp_cal_in");;
Cmd1->CommandType = adCmdStoredProc;
Cmd1->Parameters->Refresh();

Cmd1->Parameters->Item[ _variant_t( (long) 1 ) ]->Value
= _variant_t((LPCTSTR)"345678");
Cmd1->Parameters->Item[ _variant_t( (long) 2 ) ]->Value
= _variant_t((LPCTSTR)"00E04c7713E7");
Cmd1->Parameters->Item[ _variant_t( (long) 3 ) ]->Value
= _variant_t( (long) 1);
Cmd1->Parameters->Item[ _variant_t( (long) 4 ) ]->Value
= _variant_t( (long)0);
Cmd1->Parameters->Item[ _variant_t( (long) 5 ) ]->Value
= _variant_t( (long)121301);
Cmd1->Parameters->Item[ _variant_t( (long) 6 ) ]->Value
= _variant_t( (long)0);
Cmd1->Parameters->Item[ _variant_t( (long) 7 ) ]->Value
= _variant_t((LPCTSTR)"null");
Cmd1->Parameters->Item[ _variant_t( (long) 8 ) ]->Value
= _variant_t((LPCTSTR)"null");
Cmd1->Parameters->Item[ _variant_t( (long) 9 ) ]->Value
= _variant_t((long)index);
Cmd1->Parameters->Item[ _variant_t( (long) 10 )]->Value
= _variant_t((LPCTSTR)ErrInfo);

Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdUnknown);


我这样执行以后到最后 Execute还是出现了异常
大侠们帮我分析一下吧
是不是我这样写参数不对
最后两个参数是输出参数
erigido 2003-08-23
  • 打赏
  • 举报
回复
同意楼上地
hjb111 2003-08-23
  • 打赏
  • 举报
回复
转入VC版吧!
luh 2003-08-23
  • 打赏
  • 举报
回复
我有连个输入参数
已经实现用pconn
但是加上输出参数就错了

zjcxc 元老 2003-08-23
  • 打赏
  • 举报
回复
如果有输入参数,就要用adodb.command对象来调用才行.

在VC中的具体写法,请转VC版.
pengdali 2003-08-23
  • 打赏
  • 举报
回复
below is from MSDN,you can find a lot of technical article in MSDN if you search"stored procedure and VC"
good luck

Steps To Reproduce Behavior
In the SQL Server 7.0 Query Analyzer select the test database Pubs.


Create the following stored procedure. This stored procedure returns a recordset and an out parameter count.



if exists (select * from sysobjects where id = object_id(N'[dbo].[GetJobs]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop proc GetJobs
go
create proc GetJobs @id as int, @count as int [out] as
begin
Select @count = Count(*) from jobs where job_id >@id
Select * from jobs where job_id >@id
end
go




Use VC App Wizard to create a new console application and modify the code as follows:



#include "stdafx.h"
#include "stdio.h"
#import "C:\PROGRA~1\COMMON~1\System\ado\msado15.dll" no_namespace rename ("EOF", "EOF2")

struct InitOle {
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;

int main(int argc, char* argv[])
{
_variant_t varErr((long)0, VT_ERROR);
_CommandPtr comm(__uuidof(Command));
_ConnectionPtr conn(__uuidof(Connection));

_bstr_t connstr="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=(local)";
conn->Open(connstr, "", "", adConnectUnspecified);
comm->ActiveConnection=conn;
comm->CommandText="GetJobs";
comm->CommandType = adCmdStoredProc ;
comm->Parameters->Refresh();
_variant_t recs;

comm->Parameters->Item[_variant_t((short)1)]->Value= _variant_t((long)5);
_RecordsetPtr rs = comm->Execute(&recs, &vtMissing,adCmdStoredProc);

_variant_t recordcount= comm->Parameters->Item[_variant_t((short)2)]->Value;

printf("recordcount = %li\n", (long)recordcount);
return 0;
}



Change the Datasource, User ID and password in the connection string above.




The recordcount variant that the above code returns is of type VT_NULL rather than the number of records that the stored procedure returns.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧