韦德体育创建以下过程,--引用emp表sal列的类型

  • 栏目:数据 时间:2020-04-03 06:38
<返回列表

OUTPUT 游标参数OUTPUT 游标参数用来将存储过程的局部游标传递回调用批处理、存储过程或触发器。

 

sqlserver2005 游标应用与详细说明/*output 游标参数output 游标参数用来将存储过程的局部游标传递回调用批处理、存储过程或触发器。

PLSQL:Procedural Language SQL

首先,创建以下过程,在 titles 表上声明并打开一个游标:

(1)

use pubsif exists (select name from sysobjects where name = 'titles_cursor' and type = 'p')drop procedure titles_cursorgocreate procedure titles_cursor @titles_cursor cursor varying outputasset @titles_cursor = cursorforward_only static forselect *from titles

open @titles_cursorgo

plsql的基本结构(a)

接下来,执行一个批处理,声明一个局部游标变量,执行上述过程以将游标赋值给局部变量,然后从该游标提取行。

declare

use pubsgodeclare @mycursor cursorexec titles_cursor @titles_cursor = @mycursor outputwhile (@@fetch_status = 0)begin fetch next from @mycursorendclose @mycursordeallocate @mycursorgo

  id constant number(2):=2;--常量定义
  name varchar2(10);--变量定义
  mysal emp.sal%type;--引用emp表sal列的类型
  myrow emp%type; --引用emp表行类型,相当于java中对象,该行类型包含所有列
  no_data exception;--异常定义
  cursor c1 is select sal from emp;--游标定义,该c1中相当于java中集合,给
  cursor c2(dno number) is select sal from emp where deptno=dno;---带参游标定义,该c2相当于java中带泛型集合
  no_data exception;
begin
  raise no_data;
exception
  when no_data then xx;
  when others then xx;
end;

关于sql server 游标

 

游标(cursor)它使用户可逐行访问由sql server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用sql语言从数据库教程中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在sql server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。

创建存储过程语法(b):

1.2 游标的优点

             create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]  

从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:

             AS

1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。

             begin

2)提供对基于游标位置的表中的行进行删除和更新的能力。

                PLSQL子程序体;

3)游标实际上作为面向集合的数据库管理系统和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。

             End;

1.3 游标的使用

             或者

讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。

            create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]  

使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。

            is

1.3.1声明游标

            begin

最简单游标声明:declare 游标名cursor forselect语句;

                PLSQL子程序体;

其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询

            End  过程名;

例子:[已表2 addsalary为例子]

(2)循环语句
第1种
  for i in 1..100
  loop
  end loop;
第2种
  while
  loop
  end loop;
第3种
  loop
    fetch c1 into xx;
    exit when xx
  end loop;
(3)条件判断语句
if xx then
   elsif xx then xx
   elsif xx then xx
  else xx
end if;

declare mycursor cursor for select * from addsalary 这样我就对表addsalary申明了一个游标mycursor

(4)存储过程
第1种:不带参数
create or replace procedure mypro1 as
  --这里可以声明变量
begin
end;
第2种:带参数
create or replace procedure mypro2(eno in emp.empno%type,name out varchar2) as
  --这里可以声明变量
  myrow emp%rowtype;
begin
  select * into myrow from emp where empno=eno;
  name:=myrow.ename;
end;
  调用
  execute mypro1;
declare
  name varchar2;
begin
  mypro2(7369,name);
end;
(5)存储函数
create or replace function myfn1(eno in emp.empno%type) as
  return varchar2;
  --这里可以声明变量
  myrow emp%rowtype;
begin
  select * into myrow from emp where empno=eno;
  name:=myrow.ename;
  return name;
end;
  调用:
  execute myfn1(7369);
declare
  name varchar2;
begin
  name:=mypro2(7369);
end;
(6)java api 调用存储过程和存储函数
DriverManager.getConncetion()---Connection---prepareCall
CallableStatement---set in 参数直接通过设置类型setInt()---registerOutParameter--
call.execute();

declare 游标名 [insensitive] [scroll] cursorforselect语句 这里我说一下游标中级应用中的[insensitive]和[scroll]

CallableStatement调用存储过程和存储函数的sql语句
{call mypro1(?,?)}
{?=call myfn1(?)}

jdbc:oracle:thin:@ip/数据库
jdbc:mysql://ip/数据库
(7)包头和包体
create or replace package mypackage as
type mycursor is ref cursor;--自定义游标类型
procedure mypro(eno in number,o out mycursor);
--声明存储过程,可以在变量后面加上自定义的游标类型
end mypackage;

create or replace package body mypackage as
procedure myro(eno in number,o out mycursor)
as
begin
open mycursor for select * from emp where empno=eno;
end mypro;
end mypackage;
(7)触发器
create or replace trigger 触发器名
  before|after
  delete|update|insert
on 表名
  for each row--行级触发器
 begin
 end;
  raise_application_error(-2999,'') 系统定义错误

 

上一篇:图1中的统计信息就是示例数据的统计信息,图1.统计信息 下一篇:没有了

更多阅读

图1中的统计信息就是示例数据的统计信息

数据 2020-04-03
文章介绍了关于SQLServer中统计对于查询的影响性能测试,有需要了解sql服务器性能或提升性能...
查看全文

韦德体育创建以下过程,--引用emp表sal列

数据 2020-04-03
OUTPUT 游标参数OUTPUT游标参数用来将存储过程的局部游标传递回调用批处理、存储过程或触发器...
查看全文

Unicode 数据使用

数据 2020-04-03
在 MicrosoftSQL Server 的未来版本中将删除 ntext、text 和 image数据类型。请避免在新开发工作中使用...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有