--PLSQL 存储过程
--问题:为何赋值没用
--不能修改输入参数 IN关键字
CREATE OR REPLACE PROCEDURE sp_hello(--建立存储过程
p_name IN emp.ename%TYPE
)
AS
BEGIN
p_name:='hello,'||p_name;
END;
CALL sp_hello('lovo');
--解决方式一:建立临时变量
CREATE OR REPLACE PROCEDURE sp_hello(--建立存储过程
p_name IN emp.ename%TYPE
)
AS
v_name VARCHAR2(20);
BEGIN
v_name:='hello,'||p_name;
dbms_output.put_line(v_name);
END;
CALL sp_hello('lovo');
--此句只能在命令里使用,记得设置set serveroutput on
--格式
set serveroutput on
EXEC sp_hello('lovo');
--输出结果:hello,lovo
--解决方式二:块中输出
--当块里使用时需注意,不能使用call
BEGIN
sp_hello('lovo');
END;
--插入:无参数过程
CREATE OR REPLACE PROCEDURE sp_hello--无参存储过程
AS
BEGIN
dbms_output.put_line('hello');
END;
--区别,不管是否有参数都要括号
CALL sp_hello();
CALL sp_hello;--错误
--命令行里,以下口令就全部正确,不管是否有括号
EXEC sp_hello();
EXEC sp_hello;
--OUT关键字
CREATE OR REPLACE PROCEDURE sp_hello(--存储过程
p_name OUT emp.ename%TYPE
)
AS
BEGIN
p_name:='hello,'||p_name;
END;
--需注意调用方式,必须用变量来接收输出变量
--结果只有hello,
DECLARE
v1 VARCHAR2(10);
BEGIN
v1:='lovo';
sp_hello(v1);
dbms_output.put_line(v1);
END;
--out参数不能输入值
--解决办法
--结果 hello,lovo
CREATE OR REPLACE PROCEDURE sp_hello(--存储过程
p_name_in IN emp.ename%TYPE,
p_name OUT emp.ename%TYPE
)
AS
BEGIN
p_name:='hello,'||p_name_in;
END;
--调用
--理解 V2相当于过程的返回值
DECLARE
v1 VARCHAR2(10);
v2 VARCHAR2(10);
BEGIN
v1:='lovo';
sp_hello(v1,v2);
dbms_output.put_line(v2);
END;
--IN OUT 一起使用
--最方便,何时使用需看情况说明
CREATE OR REPLACE PROCEDURE sp_hello(--存储过程
p_name IN OUT emp.ename%TYPE-- IN OUT
)
AS
BEGIN
p_name:='hello,'||p_name;
END;
--调用
DECLARE
v1 VARCHAR2(10);
BEGIN
v1:='lovo';
sp_hello(v1);
dbms_output.put_line(v1);
END;
分享到:
相关推荐
PLSQL学习笔记(1-7),供大家一起学习。
Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...
Oracle SQL & PLSQL学习笔记.
Java相关课程系列笔记之三PLSQL学习笔记
Java3相关课程系列笔记之三PLSQL学习笔记
这是一篇我学习pl/sql整理出来的学习笔记,内容很精炼,我把对于初学者需要掌握的知识全部提取出来,写的非常详细,请大家参考。
本人在学习oralce时,记录的学习笔记,比较基础,但是基本可以满足普通开发人员的需要
博文链接:https://forgetoneself.iteye.com/blog/235554
韩顺平玩转oracle->plsql编程
PLSQL学习笔记 一.匿名块 匿名块是指没有名称的PL/SQL. declare v_name varchar2(5);//declare就是匿名块 begin select user_name into v_name from p_user where user_id=&id;//&id为动态id dbms_output.put_line...
PLSQL_笔记版教程 PDF 学习plsql编程的可以下载