oracle 存储过程in out inout三种参数模式
oracle过程中定义了in|out|in out3中参数模式,每个参数可以选择其一
in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
举个例子
create or replace procedure update_price(
p_product_id in NUMBER,
p_factor in NUMBER)
AS
.....
你在引用这个过程的时候给参数传入值
exexute update_price(2,2.5);
这是定义的2个参数就得到了值,in模式下值不能变
out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
in out 表示高参数可以向该过程中传递值,也可以将某个值传出去
简单的说in参数就是传入但存储过程里面处理的参数
out参数就是返回值的参数。
in参数就像c++语言里函数一般的参数那样
而out函数就像c++里函数的引用类型参数一样
不知道我比喻是否正确,请高手指点
create or replace procedure gettest2(stdname in varchar2,p_cursor in out types.mytype)
as
begin
open p_cursor for select * from test where name=stdname;
end;
例如上面的存储过程
stdname是in参数,传进去供查询语句使用
p_cursor是 out参数,返回查询的结果集
--------------------------------------------------------------------------------------------------------------------
oracle 存储过程 in out2009-08-11 16:30
创建过程语法:
create [or replace] procedure procedure_name
[ (argment [ { in| in out }] type,
argment [ { in | out | in out } ] type
{ is | as }
<类型.变量的说明>
( 注: 不用 declare 语句 )
Begin
<执行部分>
exception
<可选的异常处理说明>
end;
l 这里的IN表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT 表示传递参数和返回参数;
l 在存储过程内的变量类型只能指定变量类型;不能指定长度;
l 在AS或IS 后声明要用到的变量名称和变量类型及长度;
l 在AS或IS 后声明变量不要加declare 语句。
例1.
CREATE OR REPLACE PROCEDURE ModeTest (
p_InParameter IN NUMBER,
p_OutParameter OUT NUMBER,
p_InOutParameter IN OUT NUMBER) IS
v_LocalVariable NUMBER;
BEGIN
/* 分配 p_InParameter 给 v_LocalVariable. */
v_LocalVariable := p_InParameter; -- Legal
/* 分配 7 给 p_InParameter. 这是非法的,因为声明是IN */
p_InParameter := 7; -- Illegal
/* 分配 7 给 p_InParameter. 这是合法的,因为声明是OUT */
p_OutParameter := 7; -- Legal
/* 分配 p_OutParameter 给 v_LocalVariable.这是非法的,因为声明是OUT */
v_LocalVariable := p_outParameter; -- Illegal
/* 分配 p_InOutParameter 给 v_LocalVariable. 这是合法的,因为声明是IN OUT */
v_LocalVariable := p_InOutParameter; -- Legal
/*分配 7 给 p_InOutParameter. 这是合法的,因为声明是IN OUT */
p_InOutParameter := 7; -- Legal
END ModeTest;
/
§16.2.2 使用过程
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle 使用EXECUTE 语句来实现对存储过程的调用。
EXEC[UTE] procedure_name( parameter1, parameter2…);
例:
CREATE PACKAGE emp_data AS
TYPE EmpRecTyp IS RECORD (
emp_id NUMBER(4),
emp_name VARCHAR2(10),
job_title VARCHAR2(9),
dept_name VARCHAR2(14),
dept_loc VARCHAR2(13));
TYPE EmpCurTyp IS REF CURSOR RETURN EmpRecTyp;
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp);
END;
/
CREATE PACKAGE BODY emp_data AS
PROCEDURE get_staff (
dept_no IN NUMBER,
emp_cv IN OUT EmpCurTyp) IS
BEGIN
OPEN emp_cv FOR
SELECT empno, ename, job, dname, loc FROM emp, dept
WHERE emp.deptno = dept_no AND emp.deptno = dept.deptno
ORDER BY empno;
END;
END;
/
COLUMN EMPNO HEADING Number
COLUMN ENAME HEADING Name
COLUMN JOB HEADING JobTitle
COLUMN DNAME HEADING Department
COLUMN LOC HEADING Location
SET AUTOPRINT ON
VARIABLE cv REFCURSOR
EXECUTE emp_data.get_staff(20, :cv)
-----------------------------------
PROMPT
oracle 用 prompt实现打印功能,多用于提示信息。输入命令prompt tablename1;
标准输出为tablename1
PROMPT 告诉SQL*Plus 在屏幕上书写一行文字。你在这里使用了两个PROMPT命令;每个命令都在屏幕上打印一个空行,这对于垂直间距很有好处。ACCEPT命令是等待用户输入一个置换变量的值。ACCEPT命令中可选的PROMPT 子句在用户输入数值的同一行中显示了一条信息。你在PL/SQL 块的外面放置PROMPT 和 ACCEPT 是正确的:他们是SQL*Plus 命令,不是PL/SQL 。
分享到:
相关推荐
它能自动填充表名、视图名、列名,甚至包括存储过程和函数。这不仅减少了键入错误,还避免了记忆负担,特别是在处理大型数据库结构时。 在提供的压缩包文件中,有两个关键文件:"SQLPromptDownload.exe" 和 "SQL....
python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...
它不仅支持标准的SQL命令,还对数据库对象进行智能识别,包括视图、存储过程和用户自定义函数。 2. **语法高亮与代码格式化**: SQLPrompt提供了丰富的颜色方案,用于突出显示不同类型的SQL元素,使得代码更易于阅读...
- **Using Automatic Check-in and Automatic Check-out**:讲解了自动签入和自动签出的使用方法。 - **Manually check-in or check-out**:提供了手动签入或签出的方法。 - **Entering Comments on Check in or out...
当用户在编写SQL时,工具会根据上下文提供相关的列名、表名、函数、关键字和存储过程等建议。这种智能感知技术能够减少手动输入,提高编码速度,同时降低因拼写错误或遗忘语法导致的错误。此外,SQLPrompt还能识别...
### Oracle SET 命令参数详解 ...了解并掌握这些配置项的使用方法,对于提高工作效率和优化查询结果具有重要意义。在日常工作中,建议根据具体的使用场景灵活调整这些设置,以便更好地满足不同情况下的需求。
5. **参数提示**:当使用函数或存储过程时,SQLPrompt会显示参数列表和描述,帮助开发者准确传递参数。 6. **代码分析**:对复杂的SQL查询进行深度分析,找出可能存在的性能瓶颈,如子查询优化、索引使用建议等。 ...
SQL Prompt 10是一款专为SQL Server用户设计的强大工具,尤其对初学者和不熟悉SQL语法的开发者来说,它提供了一种高效的方式来编写、优化和理解SQL代码。这款软件通过智能提示、自动完成功能以及代码重构工具,极大...
Sqlserver插件Prompt是一款专为解决Visual Studio用户在使用数据库时缺少智能提示和不方便排版问题的实用工具。它能够极大地提升SQL Server数据库开发的效率和体验,让你在编写SQL语句时更加得心应手。 Prompt插件...
以上是关于Oracle数据库系统作业的知识点详解,覆盖了数据库的物理和逻辑存储结构、日志机制、管理参数设置、启动关闭过程、SQL*PLUS命令、SQL查询基础以及PL/SQL编程等内容。希望这些知识点能够帮助读者更好地理解...
SQLPrompt for SQLServer2016 智能提示插件 SQL2016 提示 SQLPrompt最新版本 绿色版 SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。SQL Prompt能根据数据库的对象名称,语法和...找到未使用的变量和参数
1. **SQL自动补全**:SQL+Prompt提供了一个高效且全面的SQL代码补全系统,它可以根据上下文和历史记录自动完成SQL关键字、表名、列名、函数和存储过程,大大减少了手动输入的时间和出错的可能性。 2. **语法高亮和...
PromptCARE是一种Prompt版权保护方法,通过水印注入和验证来保护Prompt。这项技术可以用于Prompt保护。 Prompt交易平台 Prompt交易平台是一种Prompt交易的平台,例如PromptBase、PromptSea、Visualise AI等。这...
在实际使用中,SQLPrompt还支持多种数据库平台,如SQL Server、Oracle、MySQL等,这意味着无论你使用哪种数据库,都能享受到它的便利。它还能与Visual Studio、SSMS(SQL Server Management Studio)等开发工具无缝...
使用方法: 1,安装SQLPrompt v5.3,这个不多说。 2,安装完毕后,断开网络连接。 3,打开Visual Studio或者SQL Server Management Studio(版本不限)。 4,在菜单栏找到SQL Prompt5,点击,找到Serial Number/Enter ...
随着更多的实践者采用这种方法,结构化Prompt的相关研究和实践正在不断深入,有望推动人工智能与人类交互的边界进一步拓展。 总的来说,结构化Prompt是人工智能技术中的一个重要创新,它通过将Prompt设计得更具结构...
Alert、Confirm和Prompt是JavaScript中的三个内置对话框函数,常用于在网页上显示警告信息、确认对话框或获取用户输入。以下将详细讲解这三个函数的用法。 1. **Alert()** `alert()` 函数用于向用户显示警告对话框...
SQLPrompt7是一款强大的SQL代码补全和智能提示工具,由Redgate Software公司开发,专为数据库开发者和管理员设计。这款工具极大地提升了SQL编程的效率,通过自动完成代码、检查语法错误、提供性能建议等功能,帮助...
Sql Prompt是一款强大的SQL代码编辑工具,它为数据库开发者提供了智能提示、格式化、重构和代码分析等功能,极大地提升了编写SQL语句的效率。这款工具由Red Gate Software开发,旨在优化SQL Server的数据库开发流程...
1. **代码补全和建议**:SQL Prompt以其智能代码补全功能而闻名,4.0版本可能会加强这一特性,提供更精确的建议,包括对T-SQL语句、函数、存储过程等的自动完成,帮助开发者更快地编写和修正代码。 2. **性能优化**...