VC中执行存储过程
来源:互联网 发布:淘宝懒人装修 编辑:程序博客网 时间:2024/05/01 16:32
try
{
ptrConn->CursorLocation =adUseClient;
_CommandPtr ptrCmd=NULL;
ptrCmd.CreateInstance(_uuidof(Command));
ptrCmd->ActiveConnection=ptrConn;
ptrCmd->CommandText=_bstr_t("QueryAddworkSalary");//过程名
ptrCmd->CommandType=adCmdStoredProc;
_ParameterPtr mp_var1,mp_var2;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var2.CreateInstance(__uuidof(Parameter));
_variant_t var1(str.GetBuffer());
mp_var1=ptrCmd->CreateParameter
(
_bstr_t("@Sno"),
adChar,
adParamInput,
10,
var1
);
ptrCmd->Parameters->Append(mp_var1);
_variant_t var2;
mp_var2=ptrCmd->CreateParameter
(
_bstr_t("@AddWorkSal"),
adInteger,//这里如果改成adNumberic,会出现 [Microsoft][ODBC SQL Server Driver 无效的缩放值,应该是和存储过程精度不匹配
adParamOutput,
0,
var2
);
ptrCmd->Parameters->Append(mp_var2);
_variant_t vNull;
vNull.vt=VT_ERROR;
vNull.scode=DISP_E_PARAMNOTFOUND;
ptrCmd->Execute(&vNull,&vNull,adCmdStoredProc);
_variant_t value1;
value1 = mp_var2->Value;
value=value1.intVal;
/*CString str((wchar_t*)(_bstr_t)(value1));
MessageBox(str)*/
}
catch(_com_error &e)
{
CString str;
CString strTemp;
str.Format(TEXT("Error:\n"));
strTemp.Format(TEXT("Code = %08lx\n"), e.Error());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Meaning = %s\n"), e.ErrorMessage());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Source = %s\n"), (wchar_t*) e.Source());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Description = %s\n"), (wchar_t*) e.Description());
str+="\n";
str+=strTemp;
MessageBox(str);
return false;
{
ptrConn->CursorLocation =adUseClient;
_CommandPtr ptrCmd=NULL;
ptrCmd.CreateInstance(_uuidof(Command));
ptrCmd->ActiveConnection=ptrConn;
ptrCmd->CommandText=_bstr_t("QueryAddworkSalary");//过程名
ptrCmd->CommandType=adCmdStoredProc;
_ParameterPtr mp_var1,mp_var2;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var2.CreateInstance(__uuidof(Parameter));
_variant_t var1(str.GetBuffer());
mp_var1=ptrCmd->CreateParameter
(
_bstr_t("@Sno"),
adChar,
adParamInput,
10,
var1
);
ptrCmd->Parameters->Append(mp_var1);
_variant_t var2;
mp_var2=ptrCmd->CreateParameter
(
_bstr_t("@AddWorkSal"),
adInteger,//这里如果改成adNumberic,会出现 [Microsoft][ODBC SQL Server Driver 无效的缩放值,应该是和存储过程精度不匹配
adParamOutput,
0,
var2
);
ptrCmd->Parameters->Append(mp_var2);
_variant_t vNull;
vNull.vt=VT_ERROR;
vNull.scode=DISP_E_PARAMNOTFOUND;
ptrCmd->Execute(&vNull,&vNull,adCmdStoredProc);
_variant_t value1;
value1 = mp_var2->Value;
value=value1.intVal;
/*CString str((wchar_t*)(_bstr_t)(value1));
MessageBox(str)*/
}
catch(_com_error &e)
{
CString str;
CString strTemp;
str.Format(TEXT("Error:\n"));
strTemp.Format(TEXT("Code = %08lx\n"), e.Error());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Meaning = %s\n"), e.ErrorMessage());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Source = %s\n"), (wchar_t*) e.Source());
str+="\n";
str+=strTemp;
strTemp.Format(TEXT("Description = %s\n"), (wchar_t*) e.Description());
str+="\n";
str+=strTemp;
MessageBox(str);
return false;
}
存储过程如下:
create procedure QueryAddworkSalary --计算,输入一个员工工号,输出一个员工的工资总和@Sno char(10),@AddWorkSal intas declare @level int declare @Ordhoursalary decimal(10,3) declare @Spechoursalary decimal(10,3) declare @Holidaysalary decimal(10,3) declare @Roridinaryhours decimal(5,2) declare @Rspecifialhours decimal(5,2) declare @Rholiday int set @level= (select Slevel from dbo.StaffInfo where Sno=@Sno)--获得该员工的等级 set @Ordhoursalary =(select Ordhoursalary from dbo.TypeOfWork where Worklevel=@level) --获得该员工津贴信息 set @Spechoursalary =(select Spechoursalary from dbo.TypeOfWork where Worklevel=@level) --获得该员工津贴信息 set @Holidaysalary =(select Holidaysalary from dbo.TypeOfWork where Worklevel=@level) --获得该员工津贴信息 set @Roridinaryhours = (select COUNT(Roridinaryhous) from dbo.Overtime where Sno =@sno); set @Rspecifialhours= (select COUNT(Rspecifialhours) from dbo.Overtime where Sno =@sno); set @Rholiday = (select COUNT(Rholiday) from dbo.Overtime where Sno =@sno); set @AddWorkSal =(select @Ordhoursalary*@Roridinaryhours +@Spechoursalary*@Rspecifialhours+@Holidaysalary*@Rholiday ) GO
- VC中执行存储过程
- VC执行存储过程
- VC执行存储过程
- VC执行存储过程
- VC执行存储过程
- VC执行存储过程
- 在VC++程序中显示存储过程的执行进度
- vc++中,ado执行sql server存储过程
- vc中ADO执行存储过程方法记录
- 在存储过程中执行存储过程
- VC中使用存储过程
- VC中使用存储过程
- oracle中执行存储过程
- oracle中执行存储过程
- sqlplus中执行存储过程
- sqlplus中执行存储过程
- C#中执行存储过程
- c#中执行存储过程
- 虚函数在基类和子类中都存在时,调用情况分析
- 什么叫回调函数
- windows 下利用 winrar 和 计划任务实现文件的自动备份
- 用python将jpg文件转为eps格式
- VMware 网络结构与编程
- VC中执行存储过程
- Apache Common HttpClient使用之七种武器
- 编写网页自动登录器、网页自动注册器、广告模拟点击器的一点思路
- 不外俄都不怪尔的
- Android入门:ContentProvider
- Redis实践:使用Pub/Sub实现对服务器群的管理监控
- 给我“空降”一个弟兄
- C++操作mysql方法
- SecureCRT中文显示乱码的解决方法