CREATE PROCEDURE proc @pin varchar(6),@pout int OUTPUT 
ASSELECT @pout=count(f1) FROM t1 WHERE f2 in (SELECT f2 FROM t2 WHERE f3 in (SELECT f3 FROM t3 WHERE f4=@pin))
GO

解决方案 »

  1.   

    http://topic.csdn.net/t/20020224/13/539739.html
      

  2.   

    --参考代码:DbParameters ps = new DbParameters();
    DbParameter paraRet = new DbParameter("Ret", "int", 4, ParameterDirection.ReturnValue, 0);   --存储过程返回值
    DbParameter para仓库编码 = new DbParameter("@仓库编码", "varchar", 20, ParameterDirection.Input, 仓库编码);   --输入参数
    DbParameter para单据类型 = new DbParameter("@单据类型", "varchar", 20, ParameterDirection.Input, 单据类型);   --输入参数
    DbParameter para单据编号 = new DbParameter("@单据编号", "varchar", 50, ParameterDirection.Output, strRet);    --输出参数ps.Add(paraRet);
    ps.Add(para仓库编码);
    ps.Add(para单据类型);
    ps.Add(para单据编号);//调用存储过程base.DataBase.RunSQLProcedure("SP_CreateNumber", ps);strRet = para单据编号.Value.ToString();
      

  3.   

    Callablestatement.execute() 还是executeQuery() or executeUpdate()?
      

  4.   

    copy http://topic.csdn.net/t/20020224/13/539739.html
      

  5.   

    我的程序:
    cstmt=conn.prepareCall("{?=call proc(?)}");
    cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
    cstmt.setString(2,sys);
    cstmt.execute();
    tmp=cstmt.getInt(1);报错信息:过程 'proc' 需要参数 '@pout',但未提供该参数。