实现传个参数,然后返回一个值。
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;
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;
解决方案 »
- 急!求助,Oracle SQL性能提高。
- where a<>0的条件,可是出来的记录却有a=0的情况,大侠指点啊!!!
- 高手看看imp导入数据库为什么会出错?
- 如果写遍历时间的SELECT语句?
- 问一个SQL语句的写法
- Oracle客户端连接问题
- 分区表的问题(高手进)我建了一张表,带分区,条件是假设销量在1000以下的商品信息存在a区,表空间任意,大于1000的商品信息存在b区,表
- ORACLE 数据块损坏(文件号1,块号36838)
- 在package的procedure如何实现动态排序
- 我想问一个比较白痴的问题:写好的PL/SQL语言在哪里执行??
- oracle 有没有类似sql server的企业管理器的管理器啊?
- Oracle如何提取数据库里的表信息???
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;
想先写一个正确的结构,然后在开始扩展里面的东西就是实现传递参数后,根据参数的到问题数量,然后根据问题数量得到阶乘然后根据这个阶乘,插入到一个表里值,比如阶乘是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))
type xx_type is record(name varchar2(100), nu number,age number .....);
v_type xx_type;
power是多少次方的吧。不知道怎么得到阶乘的
power哪个无所谓的
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;
PLS-00201: 必须说明标识符 '北京'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
我不太明白
希望指教,谢谢!!
ORA-06512: 在"CCDBUSER.TEST1", line 15
ORA-06512: 在line 1
我给你一个:
执行过程的语法:
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;
case
符号 "case" 被替换为 ";" 后继续。
Line: 25
Text: END ;
我真明白怎么回事,去掉case
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
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
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
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