关键是我不会啊~所以才问的阿~老大帮忙改一下,我加上原码
-----------
先改SP為 CREATE PROCEDURE [dbo].[create_id](@retVal OUTPUT) 
AS select @retVal=id from 表名 where id=2 
然後 
<% 
   dim Cn  
   dim Cmd 
   Set Cn=Server.CreateObject("ADODB.Connection") 
   Set Cmd=Server.CreateObject("ADODB.Command") 
   Cn.Open "Provider=SQLOLEDB;UID=Sa;PWD=;Initial catalog=Northwind;Data Source=."    Cmd.Parameters.Append cmd.CreateParameter("Rec", 3,2) 
   cmd.CommandType = 4 
    cmd.CommandText = "create_id " 
    Set cmd.ActiveConnection = cn 
    cmd.Execute     Response.Write Cmd.Parameters("Rec").value    set Cn=Nothing 
   Set Cmd=Nothing 
%> 
-----------

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[create_id](@retVal int OUTPUT)   //加上返回类型
    AS select @retVal=id from 表名 where id=2 然後 
    <% 
       
       dim Cn  
       dim Cmd 
       Dim param1 As Parameter
       Set Cn=Server.CreateObject("ADODB.Connection") 
       Set Cmd=Server.CreateObject("ADODB.Command")    Cn.Open "Provider=SQLOLEDB;UID=Sa;PWD=;Initial catalog=Northwind;Data Source=."    cmd.CommandType = 4 
        cmd.CommandText = "create_id " 
        Set cmd.ActiveConnection = cn 
    Set param2 = cmd.CreateParameter("Output", adInteger, adParamOutput)
    cmd.Parameters.Append param2
        cmd.Execute 
        Response.Write Cmd(0)
        ///Response.Write Cmd.Parameters("Rec").value    set Cn=Nothing 
       Set Cmd=Nothing %> 
      

  2.   

    cmd.CommandType = adCmdStoredProc
      

  3.   

    我要传的参数呢?
    存储过程为:
    CREATE PROCEDURE [dbo].[create_id](@okey integer,@retVal integer OUTPUT) 
    AS 
    select @retVal=id from 表名 where id=2 
    请问怎样在asp中得到@retval的值?
      

  4.   

    OK. 我寫一個給你....wait....
      

  5.   

    1、你的SP有問題:CREATE PROCEDURE [dbo].[create_id](@okey int,@retVal int OUTPUT) 
    AS 
    select @retVal=id from 表名 where id=2 
    2、ASP代碼:<%
       dim Cn 
       dim Cmd
       Set Cn=Server.CreateObject("ADODB.Connection")
       Set Cmd=Server.CreateObject("ADODB.Command")
       Cn.Open "Provider=SQLOLEDB;UID=Sa;PWD=;Initial catalog=Northwind;Data Source=."   Cmd.Parameters.Append cmd.CreateParameter("Ret", 3,2)     '這是返回來的參數
       Cmd.Parameters.Append Cmd.CreateParameter("Ins", 3,1)     '這是要傳進去的參數   Cmd.Parameters("Ins").Value = 100                            '例:傳100進去    cmd.CommandType = 4
        cmd.CommandText = "abc "
        Set cmd.ActiveConnection = cn
        cmd.Execute    Response.Write Cmd.Parameters("Ret").value   set Cn=Nothing
       Set Cmd=Nothing
    %>
      

  6.   

    記得把cmd.CommandText的值改成你自己sp的名字
      

  7.   

    返回错误:
    Formal parameter '@okey' was defined as OUTPUT but the actual parameter not declared OUTPUT. 
      

  8.   

    Cmd.Parameters.Append cmd.CreateParameter("Ret", 3,2)     '這是返回來的參數
    你把它改成Cmd.Parameters.Append cmd.CreateParameter("@retVal ", 3,2) 
    不就行了    ExecuteResponse.Write Cmd.Parameters("@retVal ").value
    我的过程中
    Response.Write Cmd(0)就是返回的结果,只不过使用的形式不同