实现传个参数,然后返回一个值。
create or REPLACE procedure createAnswer(ywtypeid in varchar2)
as 
BEGIN
DECLARE 问题数量 number;
        条目数量 number;
select count(问题编号) as 问题数量 from 问题表 where 问题类型=ywtypeid;
       select POWER('3',问题数量)  as 条目数 from dual;
   return (条目数);
END createAnswer;

解决方案 »

  1.   

    函数不是函数。过程不是过程。语法错太多了。
    create or REPLACE function createAnswer(ywtypeid in varchar2) return number
    as
    question_num number;
     query_num number;
    BEGIN
    select count(问题编号) into  question_num from 问题表 where 问题类型=ywtypeid;
    query_num:=power(question_num,3) ;
    return query_num;
    END createAnswer;
      

  2.   

    我要写存储过程
    想先写一个正确的结构,然后在开始扩展里面的东西就是实现传递参数后,根据参数的到问题数量,然后根据问题数量得到阶乘然后根据这个阶乘,插入到一个表里值,比如阶乘是3个,那插入三行。就这个意思,谢谢兄台我还有一个问题啊
    oracle有没有如同sql里面的一样,定义一个变量是一个表结构呢?,如下:
    DECLARE @答案组合表 table (id bigint  not null,第一题 varchar(10),第二题 varchar(10),第三题 varchar(10),第四题 varchar(10),第五题 varchar(10),第六题 varchar(10),第七题 varchar(10),
    第八题 varchar(10),第九题 varchar(10),第十题 varchar(10),第十一题 varchar(10),第十二题 varchar(10),第十三题 varchar(10),第十四题 varchar(10),第十五题 varchar(10),
    第十六题 varchar(10),第十七题 varchar(10),第十八题 varchar(10),第十九题 varchar(10),第二十题 varchar(10),结果 varchar(10))
      

  3.   

    第二个问题用记录:
    type xx_type is record(name varchar2(100), nu number,age number .....);
    v_type xx_type;
    power是多少次方的吧。不知道怎么得到阶乘的
      

  4.   

    那个没关系,我想弄个正确的存储过程的结构
    power哪个无所谓的
      

  5.   

    create or replace procedure test1(ywtypeid in varchar2)
    as
    asknum number;
    beginselect count(问题编号) into  asknum from 问题表 where 问题类型=ywtypeid;select count(问题编号) into  asknum from 问题表1 where 问题类型=ywtypeid;if asknum>0 then
    delete from  问题表1 where 问题类型=ywtypeid;else
         case asknum
              when 1 then
                   insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
               when 2 then
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
                    when 3 then
                 insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
                 insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
                 insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'3','yesno');
        end case;
    end if ;
    end test1;
      

  6.   

    这个兄台,我意思大概这个意思啊现在执行结果SQL> execute test1("北京");begin test1("北京"); end;ORA-06550: 第 1 行, 第 13 列: 
    PLS-00201: 必须说明标识符 '北京'
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored
    我不太明白
    希望指教,谢谢!!
      

  7.   

    SQL> execute test1('北京');begin test1('北京'); end;ORA-06592: 执行 CASE 语句时未找到 CASE
    ORA-06512: 在"CCDBUSER.TEST1", line 15
    ORA-06512: 在line 1
      

  8.   

    哎。case ... end;你多加了个case
      

  9.   

    只想弄个正确的存储过程的结构是吧?
    我给你一个:
    执行过程的语法:
      EXECUTE procedure_name(parameters_list);
    SQL> CREATE OR REPLACE PROCEDURE
      itemdesc(item_code IN VARCHAR2)
    IS
      v_itemdesc VARCHAR2(5);
    BEGIN
      SELECT itemdesc INTO v_itemdesc
      FROM itemfile
      WHERE itemcode = item_code;
      DBMS_OUTPUT.PUT_LINE(item_code||
              '项目的说明为'||v_itemdesc);
    END;
    /
    SQL> SET SERVEROUTPUT ON
    SQL> EXECUTE itemdesc('i201');
    过程1:
    SQL> CREATE OR REPLACE PROCEDURE 
      test( value1 IN  VARCHAR2, 
            value2 OUT NUMBER )
    IS
     identity  NUMBER;
    BEGIN
      SELECT ITEMRATE INTO identity 
      FROM itemFile 
      WHERE itemcode = value1;
      IF identity < 200 THEN
        value2:=100;
      END IF;
    END;
    过程1:
    DECLARE
      value1 VARCHAR2(5) := 'i202';
      value2 NUMBER;
    BEGIN
      test (value1, value2);
      DBMS_OUTPUT.PUT_LINE('value2 的值为'
             || TO_CHAR(value2));
    END;
    / 将过程的执行权限授予其他用户:
    SQL> GRANT EXECUTE ON find_emp TO MARTIN;
    SQL> GRANT EXECUTE ON swap TO PUBLIC;
    删除过程:
    SQL> DROP PROCEDURE find_emp;
      

  10.   

    不对啊,去掉end 后case,过程不成功了啊
      

  11.   

    Compilation errors for PROCEDURE CCDBUSER.TEST1Error: PLS-00103: 出现符号 ";"在需要下列之一时:
            case
           符号 "case" 被替换为 ";" 后继续。
    Line: 25
    Text: END ;
    我真明白怎么回事,去掉case
      

  12.   

    我真不知道咋回事了过程
    create or replace procedure test1(ywtypeid in varchar2)
    as
    asknum number;
    answerNum number;
    beginselect count(问题编号) a into  asknum from 问题表 where 问题类型=ywtypeid;select count(问题编号) b into  answerNum from 问题表1 where 问题类型=ywtypeid;if answerNum>0 then
    delete from  问题表1 where 问题类型=ywtypeid;
    end if;    
    CASE asknum
            WHEN 1 THEN
                 insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
            WHEN 2 THEN
                  insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
                  insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
             WHEN 3 THEN
               insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
               insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
               insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'3','yesno');
    END CASE;end test1;执行结果
    SQL> execute test1('北京'); begin test1('北京'); end; ORA-06592: 执行 CASE 语句时未找到 CASE 
    ORA-06512: 在"CCDBUSER.TEST1", line 15 
    ORA-06512: 在line 1
      

  13.   

    create or replace procedure test1(ywtypeid in varchar2)
    as
    asknum number;
    begin
    select count(问题编号) into  asknum from 问题表1 where 问题类型=ywtypeid;if asknum>0 then
    delete from  问题表1 where 问题类型=ywtypeid;else
        case asknum
              when 1 then
                  insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
              when 2 then
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
                    when 3 then
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok');
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no');
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'3','yesno');
        end;
    end if ;
    end test1
      

  14.   

    这个样子绝对有错误,什么意思呢,请指教,谢谢!create or replace procedure test2(ywtypeid in varchar2) 
    as 
    asknum number; 
    answerNum number; 
    begin 
    select count(问题编号) a into  asknum from 问题表 where 问题类型=ywtypeid; 
    select COUNT(*) b into  answerNum from 问题表1 where 问题类型=ywtypeid; if answerNum>0 then 
    delete from  问题表1 where 问题类型=ywtypeid; else 
        case asknum 
              when 1 then 
                  insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
              when 2 then 
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no'); 
                    when 3 then 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no'); 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'3','yesno'); 
        end  ; 
    end if ; 
    end test2;SQL> execute test3('北京');begin test3('北京'); end;ORA-06550: 第 1 行, 第 7 列: 
    PLS-00905: 对象 CCDBUSER.TEST3 无效
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored
      

  15.   


    create or replace procedure test2(ywtypeid in varchar2) 
    as 
    asknum number; 
    answerNum number; 
    begin 
    select count(问题编号) a into  asknum from 问题表 where 问题类型=ywtypeid; 
    select COUNT(*) b into  answerNum from 问题表1 where 问题类型=ywtypeid; if answerNum>0 then 
    delete from  问题表1 where 问题类型=ywtypeid; else 
        case asknum 
              when 1 then 
                  insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
              when 2 then 
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
                    insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no'); 
                    when 3 then 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'1','ok'); 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'2','no'); 
                insert into 问题表1 (问题类型,问题编号,问题内容) values (ywtypeid,'3','yesno'); 
        end  case;//*********在这里加上case************* 
    end if ; 
    end test2; SQL> execute test3('北京'); begin test3('北京'); end; ORA-06550: 第 1 行, 第 7 列: 
    PLS-00905: 对象 CCDBUSER.TEST3 无效 
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored