在网上查到2种方法,con已定义,过程名 SHEJIFEI_JISUAN_LR,参数 xFHSBH。
1.con.Execute "exec SHEJIFEI_JISUAN_LR '03-0412-1137'" 错误提示 无效SQL语句
2.  dim cmd,adVarChar,adParamInput
    set cmd=Server.CreateObject("Adodb.Command")
    set cmd.ActiveConnection=Con
    cmd.CommandType=4   
    cmd.CommandText="SHEJIFEI_JISUAN_LR"
    cmd.Parameters.Append cmd.CreateParameter("@xFHSBH", adVarChar, adParaminput, 20, "03-0412-1137")
  ‘这行错误提示:参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。 
    cmd.Execute()

解决方案 »

  1.   

    exec SHEJIFEI_JISUAN_LR ('03-0412-1137') --少了()吧
      

  2.   

    java端调用存储过程,不是你这样调用的吧,是用call
    CallableStatement cstmt = aConnection.prepareCall("{call procedure_name(参数)}");
    cstmt.execute();
      

  3.   

    从他定义变量来看 好像不是java 貌似是vb啊
      

  4.   

    恩 是asp 
    加括号还是无效语句  之前发asp区没人回答就转这了 
    之前这样调用也一样cmd.CommandText="{call SHEJIFEI_JISUAN_LR(xFHSBH)}"
    谢谢各位
      

  5.   

    哦 ,看到 dim 了,呵呵 不是Java 应该是VB,大一时候摸过VB 这么久没摸过,都忘了
      

  6.   

    asp调用存储过程的时候,如果是传入参数,那么需要设定5个值(参数名,参数数据类型,参数类型,数据长度,参数值)你的个数够了,但是你的参数的第二个和第三个好像不太对吧~都改为200(asVarChar)试一下
      

  7.   

    create or replace procedure SHEJIFEI_JISUAN_LR(xFHSBH in VARCHAR2)
    把adVarChar换成adVarChar2也一样
      

  8.   

    google 了试试这样
    cmd.Parameters.Append cmd.CreateParameter("@xFHSBH", adVarChar, adParaminput)
    cmd("@xFHSBH")="03-0412-1137"你那个20是什么?
      

  9.   

    你的存储过程有没有单独打包啊,如果有的话,则存储过程名字前面必须加上包的名字,
    如:pkg名字.SHEJIFEI_JISUAN_LR
      

  10.   

    解决了 参数问题 
    MyComm.Parameters.append MyComm.CreateParameter("@xFHSBH",200,1,20,"aaaaa")
    第二个参数 adBigInt: 20 ;
        adBinary : 128 ; 
        adBoolean: 11 ;
        adChar: 129 ;
        adDBTimeStamp: 135 ;
        adEmpty: 0 ;
        adInteger: 3 ;
        adSmallInt: 2 ; 
        adTinyInt: 16 ;
        adVarChar: 200 ;
    第三个参数 0 : 类型无法确定; 1: 输入参数;2: 输出参数;3:输入或输出参数;4: 返回值