日期:2014-05-17  浏览次数:20774 次

谁帮我解决一下一个存储过程的问题!谢谢了!
存储过程如下:
CREATE   PROCEDURE   .dbo.updateProject(@PID   int   ,   @proClass   tinyInt   ,@proData   varchar(8000))  
AS
    if   @proClass=1  
    begin
      exec     updatekeyproject   @proClass,@PID   ,@proData  
    end

GO


CREATE   PROCEDURE   .dbo.updateKeyProject   @proClassID   tinyint,@PID   int,   @proData   varchar(8000)  
AS
--更新主表

declare   @sql   varchar(400)
declare   @updateStr   varchar(8000)--更新主表的数据
declare   @dynamicTabStr   varchar(8000)--动态表部分的数据
  set   @updateStr=dbo.toindex(@proData, '*^* ')
  set   @dynamicTabStr=dbo.indexTotail(@proData, '*^* ')
  set   @updateStr=@updateStr+ '^ ' ' '+convert(varchar(20),GETDATE())+ ' ' ' '--加上更新时间
 
declare   @condiction   varchar(50)
set   @condiction= 'where   proClassID= '+convert(varchar(3),@proClassID)+ '   and   projectID= '+convert(varchar(7),@PID)
  exec   updateRecord   'K_UpdateKeyProView ',@updateStr, 'v ',@condiction


declare   @exeSt   varchar(400)--用于执行SQL的字符串
--更新成员表
declare   @Arrs   varchar(400),@oneRecord   varchar(100)
----.....后面还有代码,但没什么问题的!
GO


ASP调用代码:
    function   UpdateProjectEx(PID,proClass,proData)
          dim   cmd
  set   cmd=Server.CreateObject( "ADODB.Command ")
  cmd.ActiveConnection=conn
  cmd.CommandText= "updateProject "
  cmd.CommandType=adCmdStoredProc
          cmd.Parameters.Append   cmd.CreateParameter( "@PID ",   adInteger,3,   adParamInput   ,PID)  
  cmd.Parameters.Append   cmd.CreateParameter( "@proClass ",   adInteger   ,adParamInput   ,   3,proClass) '
  cmd.Parameters.Append   cmd.CreateParameter( "@proData ",   adVarChar,adParamInput   ,   8000,   proData)
  cmd.Execute
  set   cmd.activeconnection=nothing
  set   cmd=nothing
    end   function


在查询分析器里没发现什么问题啊.怎么在ASP里就是出现以下的问题?
错误类型:
Microsoft   OLE   DB   Provider   for   ODBC   Drivers   (0x80040E14)
[Microsoft][ODBC   SQL   Server   Driver][SQL   Server]形式参数   '@PID '   定义为   OUTPUT,但实际参数却未声明为   OUTPUT。
/newstsp/techAudit/inc/editproject.asp,   第   52   行
??
在线等啊.我扛不住了.
   



------解决方案--------------------

cmd.Parameters.Append cmd.CreateParameter( "@PID ", adInteger, adParamInput ,PID)