alter procedure proc_name
(
 @arg1 varchar(10),
 @arg2 varchar(10) out
)
as
select * from t1
set @arg2 = (select COUNT(1) from t1)
这个用oracle怎么写啊?  我写总是说 INVALID

解决方案 »

  1.   

    create or replace procedure proc_name
    (
     arg1 varchar2(10),
     arg2 varchar2(10) out
    )
    as
    begin
    select * from t1
    arg2 := (select COUNT(1) from t1)end
      

  2.   

    我用你的方法创建了,,存储过程上面还是有个小红叉子,,,,显示invalid 怎么回事啊? 
      

  3.   

    我把原有的sys.存储过程名 的  除了名字剩下都拷贝到我的存储过程里面  创建以后还是显示invalid
    是不是系统有问题?
      

  4.   

    上面说错了,,, 把原有的sys.存储过程名 的 除了名字剩下都拷贝到我的存储过程里面   ,,,显示创建成功了 
      

  5.   


    create or replace procedure proc_name
    (
     arg1 varchar2(10),
     arg2 out varchar2(10) 
    )
    as
    begin
    select * from t1;
    arg2 := (select COUNT(1) from t1);
    end
      

  6.   

    create or replace procedure test(v_delflg in varchar2, v_withdata in varchar2, v_columnList  in varchar2, RefCur_MasterBO out varchar2,v_totalCount out varchar2) is
    begin
      --SELECT F001,F002,F003,F004,F005,F006,F007,UPDID,UPDDT FROM TMDR01;
      RefCur_MasterBO := '1';
      --v_totalCount := (select count(*) from TMDR01);
    end test;
    上面2句话注释掉 就没事了   请问这2句话有什么问题吗?
      

  7.   

    楼主不去ORACLE版块问,在MSSQL这里不是费功夫么。
      

  8.   

    第一句没看出题
    第二句应该写到里面 还有查出数据是整型,类型不匹配
    select v_totalCount := count(*) from TMDR01
      

  9.   


    create or replace procedure test
    (v_delflg in varchar2, 
    v_withdata in varchar2, 
    v_columnList in varchar2, 
    RefCur_MasterBO out varchar2,
    v_totalCount out varchar2
    ) is
    begin
      SELECT F001,F002,F003,F004,F005,F006,F007,UPDID,UPDDT FROM TMDR01;
      RefCur_MasterBO := '1';
       select v_totalCount :=count(*) from TMDR01;
    end test;
      

  10.   


    create or replace procedure test
    (
    v_delflg in varchar2, 
    v_withdata in varchar2, 
    v_columnList in varchar2, 
    RefCur_MasterBO out varchar2,
    v_totalCount out number
    )
    as
    begin
      SELECT F001,F002,F003,F004,F005,F006,F007,UPDID,UPDDT FROM TMDR01;
      RefCur_MasterBO := '1';
       select count(*) into v_totalCount from TMDR01;
    end test;
      

  11.   

    你们是干嘛的,为什么都是一样的语句。。 这个贴我已经回答过一遍了。
     SELECT出的结果要放进游标或 用into 赋值变量。http://topic.csdn.net/u/20120524/11/3e17d148-46e0-4526-816f-3446482a6d9f.html?seed=999572085&r=78662803#r_78662803
      

  12.   

    create or replace procedure proc_name
    (
     --@arg1 varchar(10),
     --@arg2 varchar(10) out
     arg1 in varchar2;
     arg2 out varchar2;
    )
    --as
    is
    begin
      --select * from t1
      --set @arg2 = (select COUNT(1) from t1)
      select count(1) into arg2 from t1;
      dbms_output.put_line('-----------result is :' || arg2);
      return arg2;
    end;
      

  13.   


    --根据原帖我写的存储过程如下
    create or replace procedure proc_name
    (
     arg2 out varchar2
    )
    is
    begin
      select   count(*)   into   arg2   from   test1; 
    end;
    --ps:已经测试通过