动态表名的存储过程,该怎么处理
动态表名的存储过程
想用存储过程来向SQL 2008数据库中插入数据,但是表名不定,所以把表名作为参数传入,由于初次写存储过程,搞了一上午也没弄成功,老是报IDispatch error #3092错误,有会的帮忙看看什么问题,多谢。
存储过程:
我在T-SQL里写入execute insert_defect @table_name='defect_table0',@coil_id=1,@class=0,@suface=1,@xpos=2,@ypos=3,@area=100,@defltime='2013-02-19'是可以成功的,但是用ADO调用老是不行:
想用存储过程来向SQL 2008数据库中插入数据,但是表名不定,所以把表名作为参数传入,由于初次写存储过程,搞了一上午也没弄成功,老是报IDispatch error #3092错误,有会的帮忙看看什么问题,多谢。
存储过程:
CREATE PROCEDURE insert_defect
@table_name nvarchar(255),
@coil_id int,
@class int,
@suface int,
@xpos int,
@ypos int,
@area int,
@defltime nvarchar(255)
AS
declare @strSQL nvarchar(1000)
declare @param1 nvarchar(64)
declare @param2 nvarchar(64)
declare @param3 nvarchar(64)
declare @param4 nvarchar(64)
declare @param5 nvarchar(64)
declare @param6 nvarchar(64)
set @param1 = @coil_id
set @param2 = @class
set @param3 = @suface
set @param4 = @xpos
set @param5 = @ypos
set @param6 = @area
select @strSQL = N'insert into '+@table_name+N'(COIL_ID ,CLASS ,SURFACE ,XPOS ,YPOS ,AREA ,DEFECT_TIME) values('+@param1+N','+@param2+N','+@param3+N','+@param4+N','+@param5+N','+@param6+N','+@defltime+N'); select SCOPE_IDENTITY()'
exec(@strSQL)
GO
我在T-SQL里写入execute insert_defect @table_name='defect_table0',@coil_id=1,@class=0,@suface=1,@xpos=2,@ypos=3,@area=100,@defltime='2013-02-19'是可以成功的,但是用ADO调用老是不行:
try
{
_CommandPtr _pCmd;
_pCmd.CreateInstance("ADODB.Command");//__uuidof(Command));
_pCmd->ActiveConnection=pCnn;
_pCmd->CommandType=adCmdStoredProc;
_pCmd->CommandText=_bstr_t("insert_defect");
_ParameterPtr pParam;
pParam.CreateInstance("ADODB.Parameter");
pParam=_pCmd->CreateParameter("tab_name",adVarChar,adParamInput,255,_variant_t(_bstr_t(strTable)));
_pCmd->Parameters->Append(pParam);
pParam=_pCmd->CreateParameter("coil_id",adInteger,adParamInput,sizeof(int),(_variant_t)(int)m_dwCurCoilID);
_pCmd->Parameters->Append(pParam);
pParam=_pCmd->CreateParameter("class",adInteger,adParamInput,sizeof(int),(_variant_t)lpInfo->uType);
_pCmd->Parameters->Append(pParam);