oracle存储过程错误
① oracle 存储过程报错
oracle 存储过程的基本语法
1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循环
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5.变量赋值
V_TEST := 123;
6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.带参数的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(变量值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
连接数据库后建立一个Test WINDOW
在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试
② oracle存储过程语法错误
create or replace procere cx_tskc1_proc
is
begin
select 类别号,图书编号,图书名称,库存数 from 图书明细表;
end cx_tskc1_proc;
/
这样写试一下,看看是否好用。
③ Oracle 定义存储过程不能执行怎么办
无效状态有两种可能:
1、一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。
④ oracle存储过程错误,怎么改
觉得这段代码是Oracle和SQL Server的混合体。你究竟使用的是哪个数据库? 要在哪个数据中创建存储过程?
nvarchar2既不是Oracle也不是SQL Server中有的类型;
Oracle中每个语句之后要有分号,存储过程中的update语句后面没有;
getdate()是SQL Server中获取时间的函数,Oracle中没有;
最后已经有end PROC_JSGC_AFTERZBFILEBEIAN;了,那么前面的单独的end;语句就重复了;
⑤ oracle执行存储过程出错
如果SYS.FEIYONG是个表什么的,就要看你当前用户是否有访问这个对象的权限,如果是个调用的存储过程,看看这个存储过程是不是能运行正确。
⑥ oracle 存储过程 错误
end 就不需要了,与begin对应的是END P_zh_TABFPQX_11;
⑦ oracle 调用存储过程出错
call lineloss.curspkg.sp_pagination
其中 curspkg.sp_pagination 分别是包名,和过程名,
那么 lineloss 是用户名 了。
你创建 包 的用户 是什么呢? lineloss 吗 ?
你当前登录用户是 ??? 有 lineloss.curspkg.sp_pagination 的执行权限吗 ?
⑧ 请问ORACLE创建存储过程执行报如下错误是什么原因导致的
你的存储过程应该是编译报错,虽然创建了但是编译有错误。
改了下你的程序:
create or replace procere edpsc2exe7(V_col in number,
V_play out varchar2)
IS
begin
case V_col
when 1 then
V_play := 'a';
when 2 then
V_play := 'b';
else
V_play := 'c';
end case;
dbms_output.put_line(V_play);
end ;
⑨ ORACLE 存储过程执行时报错
1、execute 后面应是SQL字符串,如:
begin
executeimmediate'select*fromal';
end;
2、改为以下形式就可以:
begin
print('helloworld');
end;