当前位置:首页 » 服务存储 » 存储过程is的意思
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

存储过程is的意思

发布时间: 2022-05-26 06:50:17

① 请问这句sql存储过程的语句什么is

1.存储过程编译器事先对存储过程金星了语法检查处理,避免了因sql语句语法不正确引起运行时出现异常的问题.
2.只在保存存储过程时数据库服务器才进行编译,以后每次执行存储过程都不需要再进行重新编译而一般的sql语句每执行一次就需要数据库引擎重新编译一次,所以使用存储过程可以提高数据库执行效率(补充:这点很有用,特别是感觉你的程序和数据库相关有点慢时可以用这点,帮你程序运行的更快)
3.可以在定义存储过程的时候直接检查运行的结果是否正确,可视化的设计界面提高了效率.
4.避免了查询字符串中包含单引号等特殊字符可能会出现的问题
5.一个项目中可能会多处用到相同的sql语句,使用存储过程便于重用
6.修改灵活方便,当需要修改完成的功能时,只需要修改定义的存储过程即可,不必单独修改每一个引用.

② oracle存储过程中,is和as有什么区别

在存储过程(procere)和函数(function)中没有区别,在视图(view)中只能用as不能用is,在游标(cursor)中只能用is不能用as。

③ oracle 存储过程 as 和is 区别

第一个问题:is和as是可以互用的,用哪个都没关系的
第二个问题:在外面
第三个问题:过程中没有declare关键字,declare用在语句块中
第四个问题:估计你看到的是做游标定义的东东,抑或者直接就一句sql。

④ 存储过程如果参数没有in和out代表的是什么

oracle 存储过程in out inout三种参数模式

oracle过程中定义了in|out|in out3中参数模式,每个参数可以选择其一
in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
举个例子
create or replace procere update_price(
p_proct_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 procere 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] procere procere_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

v_LocalVariable := p_InParameter; -- Legal

p_InParameter := 7; -- Illegal

p_OutParameter := 7; -- Legal

v_LocalVariable := p_outParameter; -- Illegal

v_LocalVariable := p_InOutParameter; -- Legal

p_InOutParameter := 7; -- Legal
END ModeTest;
/

§16.2.2 使用过程
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle使用EXECUTE 语句来实现对存储过程的调用。

EXEC[UTE] procere_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 。

⑤ 1,存储过程和函数的区别

存储过程和函数目的是为了 可重复地 执行操作数据库的sql语句的集合。
区别是写法和调用上。
写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出的参数;
函数的参数列表只有输入参数,并且有return <返回值类型,无长度说明>。
返回值上:
存储过程的返回值,可以有多个值,
函数的返回值,只有一个值。
调用方式上:
存储过程的调用方式有:
1)、exec <过程名>;
2)、execute <过程名>;
3)、在PL/SQL语句块中直接调用。
函数的调用方式有:
在PL/SQL语句块中直接调用。
具体分为:
----调用FUNCTION add_three_numbers
----1. 位置表示法调用函数
BEGIN
dbms_output.put_line(add_three_numbers(2,4,5));
END;
----2. 命名表示法调用函数
BEGIN
dbms_output.put_line(add_three_numbers(b=>3, a=>4,c=>2));
END;
----3. 混合使用位置表示法和命名表示法调用函数
BEGIN
dbms_output.put_line(add_three_numbers(3, b=>4,c=>2));
END;
----4. 排除表示法
BEGIN
dbms_output.put_line(add_three_numbers(12,c=>2));
END;
----5. sql调用表示法 --混合表示法
SELECT add_three_numbers(3, b=>4,c=>2) FROM DUAL;

----1. 该函数接受3个可选参数,返回3个数字的和
CREATE OR REPLACE FUNCTION add_three_numbers
(
a NUMBER:=0, b NUMBER:=0, c NUMBER:=0
)
RETURN NUMBER IS
BEGIN
RETURN a+b+c;
END;

存储过程:
基本语法:
create procere <过程名>(<参数列表,无参时忽略>)
as|is
变量声明、初始化
begin
业务处理、逻辑代码
exception
异常捕获、容错处理
end <过程名>;
参数:<参数名> in|out|in out <参数类型,无长度说明> ,如:v_name varchar2
in:入参
out:出参
in out:出入参
注:as|is表示as或is
调用语法:
1)、exec <过程名>;
2)、execute <过程名>;
3)、在PL/SQL语句块中直接调用。
例:
create or replace procere up_wap(v_param1 in out varchar2,v_param2 in out varchar2)
is
v_temp varchar2(20);
begin
dbms_output.put_line('交换前参数1:'||v_param1||' 参数2:'||v_param2);
v_temp:=v_param1;
v_param1:=v_param2;
v_param2:=v_temp;
dbms_output.put_line('交换后参数1:'||v_param1||' 参数2:'||v_param2);
exception
when others then dbms_output.put_line('There is a error when the procere up_wap executing!');
end up_wap;
/
-- 调用存储过程
declare
v_param1 varchar2(20):='param1';
v_param2 varchar2(20):='param2';
begin
up_wap(v_param1 => v_param1,v_param2 => v_param2);
end;
/

自定义函数(function)
基本语法:
create function <函数名>(<参数列表,无参时忽略>)
return <返回值类型,无长度说明>
as|is
变量声明、初始化
begin
业务处理、逻辑代码
return <返回的值>;
exception
异常捕获、容错处理
end <函数名>;
参数:in 入参
注:只有入参的类型。
在存储过程和自定义函数中的参数的传递(入参和出参)不能使用%type或%rowtype匹配,不能使用空值null,但是存储过程可以返回空值。
例:
create function uf_select_name_by_id_test(v_id in number)
return varchar2
is
v_name t_test.t_name%type;
begin
select t_name into v_name from t_test where t_id=v_id;
return v_name;
exception
when others then dbms_output.put_line('error');
end uf_select_name_by_id_test;
/
select uf_select_name_by_id_test(1) 姓名 from al;-- select调用
declare --pl/sql语句块调用
v_name varchar2(20);
begin
v_name:=uf_select_name_by_id_test(1);
dbms_output.put_line('name = '||v_name);
end;
/

⑥ 创建存储过程is和as有什么区别

is 用来判断类型 如: if(val is String){.....}

as 作为/当做 的意思吧,我叙述不清,给你个例子吧:
function xx(e:Event):void{
var ss:Loader = e.target as Loader; // 让SS共享调用XX事件的对象的信息;
..}

⑦ 什么是存储过程

CREATE PROCEDURE [拥有者.]存储过程名[;程序编号] [(参数#1,…参数#1024)] [WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ] [FOR REPLICATION] AS 程序行 其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数 (SQL Server 7.0以上版本),参数的使用方法如下: @参数名 数据类型 [VARYING] [=内定值] [OUTPUT] 每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。 [=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。 例子: CREATE PROCEDURE order_tot_amt @o_id int, @p_tot int output AS SELECT @p_tot = sum(Unitprice*Quantity) FROM orderdetails WHERE ordered=@o_id GO 例子说明: 该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表 (orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。
编辑本段实例
数据库存储过程
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。 利用SQL的语言可以编写对于数据库访问的存储过程,其语法如下: CREATE PROC[EDURE] procere_name [;number] [ {@parameter data_type} ][VARYING] [= default] [OUTPUT] ] [,...n] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ] [FOR REPLICATION] AS sql_statement [...n] [ ]内的内容是可选项,而()内的内容是必选项, 例:若用户想建立一个删除表tmp中的记录的存储过程Select_delete可写为: Create Proc select_del As Delete tmp 例:用户想查询tmp表中某年的数据的存储过程 create proc select_query @year int as select * from tmp where year=@year 在这里@year是存储过程的参数 例:该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。 空:表示该结点为顶层结点 fjdid(父结点编号) 结点n 非空:表示该结点的父亲结点号 dwmc(单位名称) CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output as declare @stop int declare @result varchar(80) declare @dwmc varchar(80) declare @dwid int set nocount on set @stop=1 set @dwmc="" select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold set @result=rtrim(@dwmc) if @dwid=0 set @stop=0 while (@stop=1) and (@dwid<>0) begin set @dwidold=@dwid select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold if @@rowcount=0 set @dwmc="" else set @result=@dwmc+@result if (@dwid=0) or (@@rowcount=0) set @stop=0 else continue end set @dwmcresult=rtrim(@result) 使用exec pro-name [pram1 pram2.....]
SQL Server中执行存储过程
sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。用的时候直接就可以用了。 在SQL Server的查询分析器中,输入以下代码: declare @tot_amt int execute order_tot_amt 1,@tot_amt output select @tot_amt 以上代码是执行order_tot_amt这一存储过程,以计算出定单编号为1的定单销售金额,我们定义@tot_amt为输出参数,用来承接我们所要的结果。
Oracle中的存储过程
1.创建过程 与其它的数据库系统一样,Oracle的存储过程是用PL/SQL语言编写的能完成一定处理功能的存储在数据库字典中的程序。 语法: create [or replace] procere procere_name [ (argment [ { in| in out }] type, argment [ { in | out | in out } ] type { is | as } <类型.变量的说明> ( 注: 不用 declare 语句 ) Begin <执行部分> exception <可选的异常处理说明> end; 1.1 这里的IN表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT 表示传递参数和返回参数; 1.2 在存储过程内的参数只能指定参数类型;不能指定长度; 1.3 在AS或IS 后声明要用到的变量名称和变量类型及长度; 1.4 在AS或IS 后声明变量不要加declare 语句。 2.使用过程 存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、Oracle开发工具或第三方开发工具来调用运行。Oracle 使用EXECUTE 语句来实现对存储过程的调用。 语法: EXEC[UTE] procere_name( parameter1, parameter2…); 3.开发过程 目前的几大数据库厂商提供的编写存储过程的工具都没有统一,虽然它们的编写风格有些相似,但由于没有标准,所以各家的开发调试过程也不一样。下面编写PL/SQL存储过程、函数、包及触发器的步骤如下: 3.1 编辑存储过程源码使用文字编辑处理软件编辑存储过程源码,要用类似WORD 文字处理软件进行编辑时,要将源码存为文本格式。 3.2 对存储过程程序进行解释在SQLPLUS或用调试工具将 存储过程程序进行解释; 在SQL>下调试,可用start 或get 等Oracle命令来启动解释。如: SQL>start c:\stat1.sql 如果使用调试工具,可直接编辑和点击相应的按钮即可生成存储过程。[1] 3.3 调试源码直到正确我们不能保证所写的存储过程达到一次就正确。所以这里的调试是每个程序员必须进行的工作之一。在SQLPLUS下来调试主要用的方法是: 1.使用 SHOW ERROR命令来提示源码的错误位置; 2.使用 USER_ERRORS 数据字典来查看各存储过程的错误位置。 3.4 授权执行权给相关的用户或角色如果调试正确的存储过程没有进行授权,那就只有建立者本人才可以运行。所以作为应用系统的一部分的存储过程也必须进行授权才能达到要求。 在SQLPLUS下可以用GRANT命令来进行存储过程的运行授权。 语法: GRANT system_privilege | role TO user | role | PUBLIC [WITH ADMIN OPTION] 或 GRANT object_privilege | ALL column ON schema.object TO user | role | PUBLIC WITH GRANT OPTION 其中: system_privilege: 系统权限 role: 角色名 user: 被授权的用户名 object_privilege: 所授予的权限名字,可以是 ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE Column: 列名 schema: 模式名 object: 对象名 4.数据字典 USER_SOURCE 用户的存储过程、函数的源代码字典 DBA_SOURCE 整个系统所有用户的存储过程、函数的源代码字典 ALL_SOURCE 当前用户能使用的存储过程(包括其她用户授权)、函数的源代码字典 USER_ERRORS 用户的存储过程、函数的源代码存在错误的信息字典

⑧ 存储过程中很多IS 是干什么的

不是sql server吧

sql server的sp里没有看到IS啊!

⑨ 关于存储过程的 as 和 is 问题

要是换成AS就要改成下面的写法
CREATE PROCEDURE STUDENT_UPDATE
as
BEGIN
UPDATE STUDENT SET NAME = 'NULL'
WHERE ID IN
(
SELECT ID FROM STUDENT WHERE AGE < 20
);
COMMIT;
END;
go

⑩ oracle存储过程中的关键字is、as究竟有什么区别呀

1、单独的FUNCTION, PROCEDURE 习惯用AS,PACKAGE 中的FUNCTION, PROCEDURE 用IS
2、
create [or replace] procere <过程名>
(
<参数1> [方式1] <数据类型1>,
<参数2> [方式2] <数据类型2>
)
is|as
PS/SQL过程体;
单独的这么看is as 也没区别