急求方法:c# 调用sybase 数据库存储过程,取不到返回值,请高手指点哈 驱动用的 oledb, 存储代码: create proc use_deptparentno @userno varchar(8), @deptparentno char(4) output as begin declare @parentDeptno char(4) declare @deptno char(4) declare @levelId int declare @count int set @count=1 select @deptno=deptno from t_user_d where userno=@userno select @levelId=levelid from t_dept where deptno=@deptno while(@count<=@levelId) begin select @deptno=case when deptparentno is null then deptno else deptparentno end from t_dept where deptno=@deptno print @deptno set @count=@count+1 end set @deptparentno=@deptno select deptno into #Pageing1 from t_dept where deptno=@deptno select deptno from #Pageing1 end
调用代码: string num = string.Empty; OleDbParameter[] param = new OleDbParameter[] { new OleDbParameter("@userno",OleDbType.VarChar,8,userno), new OleDbParameter("@deptparentno",OleDbType.Char,4,ParameterDirection.ReturnValue,true,10,0,null,DataRowVersion.Default,num) }; using (OleDbDataReader rd = OledbHelpDao.ExecuteReader(base.ConnStr, CommandType.StoredProcedure, "use_deptparentno", param)) { if (rd.HasRows && rd.Read()) { object o = rd.GetValue(0); } } string ID = Convert.ToString(param[1].Value); return num;
------解决方案-------------------- 简单示例: C#调用存储过程简单完整例子 CREATE PROC P_TEST @Name VARCHAR(20), @Rowcount INT OUTPUT AS BEGIN SELECT * FROM T_Customer WHERE NAME=@Name SET @Rowcount=@@ROWCOUNT END GO