精华内容
下载资源
问答
  • Oracle之创建存储过程SQL语句

    千次阅读 2020-05-19 17:23:26
    1、创建存储过程。 create or replace procedure myprocedure(sid in number) as exam number; begin select * from score where sid=score.userid; dbms_output.put_line(exam); if exam>60 then dbms_o

    一、某学生成绩大于60分,输出good;某学生成绩小于60分输出oh no。(在输出中查看信息)

    ~需要一张成绩表单,包含成绩信息和学生学号。
    1、创建存储过程。

    create or replace procedure myprocedure(sid in number)
    as
    exam number;
    begin
    select * from score where sid=score.userid;
    dbms_output.put_line(exam);
    if exam>60 then
    dbms_output.put_line('good');
    else
    dbms_output.put_line('oh no');
    end if;
    end myprocedure;
    

    2、调用该存储过程,括号内为学生学号。

    begin
    myprocedure(1007);
    end;
    

    二、若全班平均成绩大于等于60分,输出good;若平均成绩小于60分,每位同学成绩在原来基础上+5分(做循环),直到输出为good,停止循环。

    ~需要一张成绩表单,包含所有学生成绩。
    1、创建存储过程。

    create or replace procedure system.scr_pro
    as
    avgscnum number;
    begin
      select avg(scnum) into avgscnum from system.score;
      while avgscnum<60 loop
        select avg(scnum) into avgscnum from system.score;
      dbms_output.put_line(avgscnum);
      if avgscnum>=60 then
        dbms_output.put_line('good');
      else
        update system.score set scnum=scnum+5;
      end if;
     end loop;
    end scr_pro;
    

    2、调用该存储过程。

    begin
      system.scr_pro;
    end;
    

    ~注:
    1、空格、分号在英文状态下输入;
    2、千万不要忘记,该写分号时,一定不能忘(自己就吃了亏);
    3、敲代码,练习自己的逻辑思维。

    展开全文
  • create proc proc_Login ( @UserName varchar (20), @UserPwd varchar (20) ) AS if exists(select * from tb_User where UserName=@UserName and UserPwd=@UserPwd) return 100 ...
  • 展开全部可以在客户端里面直接写 比如用 navicat 就写:delimiter$$;createprocedurelucia_proc16(countint)beginDECLAREname_procVARCHAR(20)CHARACTERSETutf8;DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;...

    展开全部

    可以在客户端里面直接写 比如用 navicat 就写:delimiter $$;

    create procedure lucia_proc16(count int)

    begin

    DECLARE name_proc VARCHAR(20) CHARACTER SET utf8;

    DECLARE sex_proc VARCHAR(4) CHARACTER SET utf8;

    DECLARE age_proc INT(10);

    DECLARE class_proc VARCHAR(20) CHARACTER SET utf8;

    DECLARE Addr_proc VARCHAR(50) CHARACTER SET utf8;

    DECLARE i INT;

    set i = 1;

    set sex_proc = '女';

    set age_proc = 20;

    set class_proc = '山治班';

    set Addr_proc = '北京市朝阳区';

    while i

    set name_proc = CONCAT('露西亚',i);

    insert into students(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);

    set i = i+1;

    end while;

    end

    $$;

    delimiter;

    call lucia_proc16(500);

    fa8c5f214da3872c20cb229caf6c23dd.png

    这个就是一个循环插32313133353236313431303231363533e58685e5aeb931333361313961入 500 条记录的 sp 效果如下:

    74cbfd105debc2dbc6e30edc56536fe3.png

    展开全文
  • /*以下是有关安全控制的系统存储过程SQL 语句,详细语法查阅《联机丛书》相关内容*/--创建新的 SQL Server 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server。EXEC sp_addlogin @loginame = '', @...

    /*以下是有关安全控制的系统存储过程或 SQL 语句,详细语法查阅《联机丛书》相关内容*/

    --创建新的 SQL Server 登录,使用户得以连接使用 SQL Server 身份验证的 SQL Server。

    EXEC sp_addlogin @loginame = '', @passwd = '', @defdb = '', @deflanguage = NULL, @sid = NULL, @encryptopt = NULL

    --使 Windows NT 用户或组帐户得以使用 Windows 身份验证连接到 SQL Server。

    EXEC sp_grantlogin @loginame = ''

    --删除 SQL Server 登录,以阻止使用该登录名访问 SQL Server。

    EXEC sp_droplogin @loginame = ''

    --阻止 Windows NT 用户或组连接到 SQL Server。

    EXEC sp_denylogin @loginame = ''

    --从 SQL Server 中删除用 sp_grantlogin 或 sp_denylogin 创建的 Windows NT 用户或组的登录项。

    EXEC sp_revokelogin @loginame = ''

    --更改登录的默认数据库。

    EXEC sp_defaultdb @loginame = '', @defdb = ''

    --更改登录的默认语言。

    EXEC sp_defaultlanguage @loginame = '', @language = ''

    --添加或更改 SQL Server 登录密码。

    EXEC sp_password @old = '', @new = '', @loginame = ''

    --添加服务器角色新成员。

    EXEC sp_addsrvrolemember @loginame = '', @rolename = ''

    --添加服务器角色某成员。

    EXEC sp_dropsrvrolemember @loginame = '' , @rolename = ''

    --为 SQL Server 登录或 Windows NT 用户或组在当前数据库中添加一个安全帐户,并使其能够被授予在数据库中执行活动的权限(授予默认的“public”数据库角色)。

    EXEC sp_grantdbaccess @loginame = '', @name_in_db = NULL

    --或

    EXEC sp_adduser @loginame = '', @name_in_db = NULL, @grpname = ''

    --从当前数据库中删除安全帐户。

    EXEC sp_revokedbaccess @name_in_db = ''

    --或

    EXEC sp_dropuser @name_in_db = ''

    --在当前数据库创建新数据库角色。

    EXEC sp_addrole @rolename = '', @ownername = ''

    --在当前数据库删除某数据库角色。

    EXEC sp_droprole @rolename = ''

    --在当前数据库中添加数据库角色新成员。

    EXEC sp_addrolemember @rolename = '', @membername = ''

    --在当前数据库中删除数据库角色某成员。

    EXEC sp_droprolemember @rolename = '', @membername = ''

    --权限分配给数据库角色、表、存储过程等对象

    --1、授权访问

    GRANT

    --2、拒绝访问

    DENY

    --3、取消授权或拒绝

    REVOKE

    --4、Sample(pubs):

    GRANT SELECT ON authors TO Limperator

    DENY SELECT ON authors TO Limperator

    REVOKE SELECT ON authors TO Limperator

    posted on

    2007-12-14 11:37

    Seer Lin

    阅读(474)

    评论(0)

    编辑

    收藏

    展开全文
  • 具有更好的性能存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。2.功能实现更加灵活存储过程中...

    应用存储过程的优点:

    1.具有更好的性能

    存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,

    而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。

    2.功能实现更加灵活

    存储过程中可以应用条件判断和游标等语句,有很强的灵活性,可以直接调用数据库的一些内置函数,完成复杂的判断和较复杂的运算。

    3.减少网络传输

    复杂的业务逻辑需要多条 SQL 语句,当客户机和服务器之间的操作很多时,

    将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会减少,降低了网络负载。

    4.具有更好的安全性

    (1)数据库管理人员可以更好的进行权限控制,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

    (2)在通过网络调用过程时,只有对执行过程的调用是可见的。无法看到表和数据库对象名称,不能嵌入SQL 语句,有助于避免 SQL 注入攻击。

    存储过程的弊端:

    1.架构不清晰,不够面向对象

    存储过程不太适合面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,

    业务逻辑在存储层实现,增加了业务和存储的耦合,代码的可读性也会降低,

    2.开发和维护要求比较高

    存储过程的编写直接依赖于开发人员,如果业务逻辑改动较多,需要频繁直接操作数据库,

    大量业务降维到数据库,很多异常不能在代码中捕获,出现问题较难排查,需要数据库管理人员的帮助。

    3.可移植性差

    过多的使用存储过程会降低系统的移植性。在对存储进行相关扩展时,可能会增加一些额外的工作。

    存储过程与SQL语句如何抉择:

    普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请求量较少的操作,例如后台大批量查询、定期更新等。

    (1)当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程

    (2)在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程

    (3)比较复杂的统计和汇总可以考虑应用后台存储过程

    展开全文
  • SQL语句创建存储过程

    2010-06-08 22:09:08
    创建数据库的存储过程 要求: 实现增,删,查,改!!
  • 自动执行SQL语句&创建标准的Sql 存储过程
  • 基本语法记的不扎实,总是忘...一、创建存储过程   create or replace procedure proc_insert(departno in number) is begin declare cursor cur_insert is select * from emp where deptno = departno; ...
  • --创建分页的存储过程 alter procedure proc_page @tabName varchar(50), @pageIndex int=1, @pageSize int=5, @pk varchar(20)='id', @cols varchar(200)='*', @where varchar(500)='1=1', @order varchar...
  • ”结尾,回车后自动执行,在存储过程中“;”往往不代表指令结束,马上运行,而DELIMITER原本就是“;”的意思,因此用这个命令转换一下“;”为“//”,这样只有收到“//”才认为指令结束可以执行,问题出在//和...
  • sql语句创建库 表 视图与存储过程sql语句创建库 表 视图与存储过程
  • 在实际的软件开发项目中,我们经常会遇到需要创建多个相同类型的数据库表或存储过程的时候。例如,如果按照身份证号码的尾号来分表,那么就需要创建10个用户信息表,尾号相同的用户信息放在同一个表中。 对于类型...
  • JDBC执行创建存储过程语句,出现SQL-92错误。 在网上查询一下,有人说特殊字符' \n会导致这种错误,排除这些原因后,仍找不到原因。 发现数据库对存储过程里的SQL语法并不会做完全的验证,例如把select写成sel也...
  • 在SQLyog上使用SQL语句创建存储过程

    千次阅读 2018-11-29 13:46:23
    首先来写一条简单的创建存储过程语句,将教师表中中符合条件的教师数量进行统计返回到num中,代码如下: CREATE PROCEDURE teacherSum(IN sex varchar(4), IN depart varchar(10), OUT num INT) BEGIN SELECT ...
  • JDBC基础-用SQL语句创建存储过程本节例示一个不带参数的简单存储过程。多数存储过程的功能比本例复杂多了,但这里主要说明存储过程的一些基本要点。如前面所述,不同DBMS定义存储过程 的语法是不同的。例如,有些...
  • 存储过程SQL语句对比 优势: 1、提高性能 SQL语句创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在...
  • 存储过程执行效率比单独的SQL语句效率高。 样编写存储过程存储过程在SQL Server 2005对应数据库的可编程性目录下。 比如,创建一个存储过程 代码如下: create procedure procNewsSelectNewNews as begin select ...
  • 特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如PHP),要组织很多SQL语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在PHP代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务...
  • SQL语句创建存储过程,并执行

    万次阅读 2015-12-29 17:21:00
    创建一个存储过程 里面有个输出参数output create proc multi @num1 int, @num2 int=10 output --output的功能类似于C#中的out修饰参数 as set @num2=@num2*@num1 print @num2 二.执行存储过程 exec multi 5,5...
  • Mysql存储过程和函数基本概念:创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中。例如,银行经常需要计算用户的利息。不同类别的用户的利率是不一样的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,806
精华内容 3,122
关键字:

创建存储过程sql语句