这是表
CREATE TABLE TB_USER(
U_ID int primary key NOT NULL,
U_LOGIN_NAME varchar2(30) NULL,
U_PWD varchar2(32) NULL 
)tablespace DB_TLJ;
这是存储过程,存储过程中的两个SQL语句都正确,已经调试过
create PROCEDURE SupesoftPage(
v_TableName in varchar2,
v_ReturnFields in varchar2,
v_PageSize in number,
v_PageIndex in number,
v_Where_login_name in varchar2,
v_where_pwd in varchar2,
v_Orderfld in varchar2,
v_OrderType in number,
v_TotalRecord out number,
v_TotalPage out number,
v_countSql out varchar2,
  v_sql out varchar2
)
AS
  v_CurrentPageSize number;
  v_TotalRecordForPageIndex number;
  v_OrderBy varchar2(4000);
  v_CutOrderBy varchar2(4000);
    
    
begin 
if (v_OrderType=1) then
v_OrderBy:=' Order by ' || v_Orderfld || ' desc ';
v_CutOrderBy:=' Order by '|| v_Orderfld || ' asc ';
end if;
if (v_OrderType<>1) then
v_OrderBy:=' Order by ' || v_Orderfld || ' asc ';
v_CutOrderBy:=' Order by '|| v_Orderfld || ' desc '; 
end if;
    v_countSql:='SELECT Count(*) From '||v_TableName||' '||'Where U_STATE=0'||' '||'and U_LOGIN_NAME='||''''||v_Where_login_name||''''||' '||'and U_PWD='||''''||v_where_pwd||'''';
execute immediate v_countSql into v_TotalRecord;v_TotalPage:=(v_TotalRecord-1)/v_PageSize + 1;
v_CurrentPageSize:=v_PageSize;
  IF (v_TotalPage=v_PageIndex) then
v_CurrentPageSize:=mod(v_TotalRecord,v_PageSize);
IF (v_CurrentPageSize=0) then
v_CurrentPageSize:=v_PageSize;
end if;
END if;v_TotalRecordForPageIndex:=v_PageIndex*v_PageSize;v_sql:='SELECT * FROM (SELECT * FROM (SELECT '||v_ReturnFields||' FROM '||v_TableName||' '||'Where U_STATE=0'||' '||'and U_LOGIN_NAME='||''''||v_Where_login_name||''''||' '||'and U_PWD='||''''||v_where_pwd||''''||' '||'and rownum<='||v_TotalRecordForPageIndex||' '||v_OrderBy||' '||') TB2 where rownum<='||v_CurrentPageSize||' '||v_CutOrderBy||' '||') TB3 ' ||v_OrderBy;end SupesoftPage;
这是.net里传参的
  private string _where_login_name;
public string where_login_name
  {
  get
  {
  return _where_login_name;
  }
  set
  {
  _where_login_name = value;
  }
  }
cmd.Parameters.Add("v_Where_login_name", OracleType.VarChar).Direction = ParameterDirection.Input;
  cmd.Parameters["v_Where_login_name"].Value = pp.where_login_name;
跟踪发现pp.where_login_name=“c”,就是传不进存储过程中,把它改成常量"c"就不报错,变量就报下面的错
ORA-06550: 第 1 行, 第 7 列:  
PLS-00306: 调用 'SUPESOFTPAGE' 时参数个数或类型错误而且是 OracleDataReader dr = cmd.ExecuteReader();
                dr.Read()总是空