我在sql2000中写了一张表
create table stu(
xinming char(50),
age integer
)
加入一个记录
insert into stu(xinming,age) values('yang',23)
写了个存储过程 pro1
create procedure pro1 @age1 integer,@name1 char(50) output
as
select @name1=xinming from stu where age=@age1
go在查询分析器中提示成功!vc中代码:
_CommandPtr cmd;
cmd.CreateInstance("Command");
//id号
_ParameterPtr pParamRk;
pParamRk.CreateInstance("Parameter");
pParamRk->Name=""; //存储过程的参数1
pParamRk->Type=adInteger; //整型
pParamRk->Size=sizeof(int); //
pParamRk->Direction=adParamInput;//表明是输入参数
CString tstr;
tstr.Format("%d",id);
pParamRk->Value=_variant_t(tstr);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamRk);
//返回值
_ParameterPtr pParamOk;
pParamOk.CreateInstance("Parameter");
pParamOk->Name=""; //参数2名称
pParamOk->Type=adChar; //字符串
pParamOk->Size=20; //大小为20个字节
pParamOk->Direction=adParamOutput; //声明是输出参数
cmd->Parameters->Append(pParamOk);
cmd->ActiveConnection = piConnection;
cmd->CommandText="pro1"; //存储过程的名字
cmd->CommandType=adCmdStoredProc;//表示为存储过程adCmdStoredProc
//执行,获得结果
cmd->Execute(NULL, NULL, adCmdStoredProc);
//将值返回
return (char*)_bstr_t(pParamOk->Value);
始终没有得到返回值,这是怎么回事,我要是把存储过程改掉,变成两个输入参数,存储过程变成insert into stu(xinming,age) values(@name1,@age1)
vc代码稍微更改一下,值是可以插入到表中的,这是怎么回事?????????为什么带有输出参数就不行??????vc6 +win2000 server+sql server2000
create table stu(
xinming char(50),
age integer
)
加入一个记录
insert into stu(xinming,age) values('yang',23)
写了个存储过程 pro1
create procedure pro1 @age1 integer,@name1 char(50) output
as
select @name1=xinming from stu where age=@age1
go在查询分析器中提示成功!vc中代码:
_CommandPtr cmd;
cmd.CreateInstance("Command");
//id号
_ParameterPtr pParamRk;
pParamRk.CreateInstance("Parameter");
pParamRk->Name=""; //存储过程的参数1
pParamRk->Type=adInteger; //整型
pParamRk->Size=sizeof(int); //
pParamRk->Direction=adParamInput;//表明是输入参数
CString tstr;
tstr.Format("%d",id);
pParamRk->Value=_variant_t(tstr);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamRk);
//返回值
_ParameterPtr pParamOk;
pParamOk.CreateInstance("Parameter");
pParamOk->Name=""; //参数2名称
pParamOk->Type=adChar; //字符串
pParamOk->Size=20; //大小为20个字节
pParamOk->Direction=adParamOutput; //声明是输出参数
cmd->Parameters->Append(pParamOk);
cmd->ActiveConnection = piConnection;
cmd->CommandText="pro1"; //存储过程的名字
cmd->CommandType=adCmdStoredProc;//表示为存储过程adCmdStoredProc
//执行,获得结果
cmd->Execute(NULL, NULL, adCmdStoredProc);
//将值返回
return (char*)_bstr_t(pParamOk->Value);
始终没有得到返回值,这是怎么回事,我要是把存储过程改掉,变成两个输入参数,存储过程变成insert into stu(xinming,age) values(@name1,@age1)
vc代码稍微更改一下,值是可以插入到表中的,这是怎么回事?????????为什么带有输出参数就不行??????vc6 +win2000 server+sql server2000
pParamOk->Name="age1";
输出部分:
pParamOk->Name="name1";
这儿应告诉computer大叔,你对应操作的存储过程中的形参名,computer虽然很热心,但你不告诉它,它也不能帮你啊!
http://expert.csdn.net/Expert/topic/2603/2603404.xml?temp=.8833124
你应该这样写
create procedure pro1 @age1 integer,@name1 char(50) output
as
declare @SQL Nvarchar(100)
select @SQl=N'Select @A=xinming from stu where age='+cast(@age1 as Nvarchar(3))
Exec sp_executesql @SQl,N'@A varchar(20) output',@name1 outputgo
但是在查询分析器中是成功的。
rs=cmd.execute