存储过程

SQL 判断 ‘表,存储过程,函数 ...’ 已是否存在

点点圈 提交于 2019-12-17 06:06:30
下面为您介绍sql下用了判断各种资源是否存在的代码,需要的朋友可以参考下,希望对您学习sql的函数及数据库能够有所帮助。 库是否存在 if exists(select * from master..sysdatabases where name=N'库名') print 'exists' else print 'not exists' --------------- -- 判断要创建的表名是否存在 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) -- 删除表 drop table [dbo].[表名] GO --------------- --判断要创建临时表是否存在 If Object_Id('Tempdb.dbo.#Test') Is Not Null Begin print '存在' End Else Begin print '不存在' End --------------- -- 判断要创建的存储过程名是否存在 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存储过程名]') and

Oracle 存储过程

拥有回忆 提交于 2019-12-17 03:49:55
简要记录存储过程语法与Java程序的调用方式   一 存储过程     首先,我们建立一个简单的表进行存储过程的测试 create table xuesheng(id integer, xing_ming varchar2(25), yu_wen number, shu_xue number);insert into xuesheng values(1,'zhangsan',80,90)insert into xuesheng values(2,'lisi',85,87) 1)无返回值的存储过程 create or replace procedure xs_proc_no isbegin insert into xuesheng values (3, 'wangwu', 90, 90); commit;end xs_proc_no; 2)有单个数据值返回的存储过程 create or replace procedure xs_proc(temp_name in varchar2, temp_num out number) is num_1 number; num_2 number;begin select yu_wen, shu_xue into num_1, num_2 from xuesheng where xing_ming = temp_name; --dbms

Oracle基本操作4-存储过程

六月ゝ 毕业季﹏ 提交于 2019-12-17 03:30:47
目录 存储过程 存储过程的参数--in,默认可省略 存储过程的参数--out 存储过程的参数--in out 存储过程 create [or replace] procedure 实例名[变量 in/out/in out数据类型] as [变量 数据类型] begin 主程序语句; commit;--如果有insert、update、delete语句,一定要commit end; 例子:给部门表插入两条数据,80 财务部 81 市场部。 创建myproc存储过程,如果指定的存储过程名称在数据库中没有,则直接创建,如果数据库中已经存储同名的存储过程,加上关键字 or replace 直接覆盖已经存在的存储过程实例,如果不加关键字 or replace ,则会提示该实例名已被使用。 执行存储过程的两种方式 ①命令窗口输入 ②使用PL/SQL调用存储过程 如果创建的存储过程有语法错误,在左侧的produces文件夹下能看见创建的存储过程实例有个小红叉,右键编辑可以查看错误。 存储过程的参数–in,默认可省略 例子:根据输入的员工编号,打印该员工姓名 存储过程的参数–out 例子:根据输入的员工编号,返回该员工姓名 存储过程的参数–in out 交换2个参数的值 来源: CSDN 作者: MicoOu 链接: https://blog.csdn.net/MicoOu/article

存储过程及游标使用

与世无争的帅哥 提交于 2019-12-17 03:01:30
存储过程及游标使用 实现test2表向test1表同步 create or replace procedure procedure_test as v_id armcp.test2.id%Type; v_c1 armcp.test2.c1%Type; cursor cursor_test2 is( select t2.id, t2.c1 from test2 t2); begin open cursor_test2; loop fetch cursor_test2 into v_id, v_c1; update test1 t1 set t1.c1 = v_c1 where t1.id = v_id; exit when cursor_test2%notfound; end loop; commit; close cursor_test2; end; 来源: https://www.cnblogs.com/BonnieWss/p/10910944.html

MySQL学习之存储过程

冷暖自知 提交于 2019-12-17 01:29:17
目录 存储过程 存储过程优点 存储过程缺点 存储过程和视图的区别 创建 使用 删除 存储过程之事务操作 存储过程之游标操作 存储过程之防SQL注入 存储过程 是存储在数据库中的一个别名,这个别名对应着一个SQL语句集合 存储过程优点 1. 用于替代程序写的 SQL 语句,实现程序与 sql 解耦 2. 基于网络传输,传别名的数据量小,而直接传 sql 数据量大 存储过程缺点 1. 程序员扩展功能不方便 存储过程和视图的区别 1,视图是虚拟的一张表,数据来源于物理表 2,存储过程可以进行任意操作 3,视图的调用方式是select 4,存储过程的调用方式是call 创建 建议: 在哪个库就把存储过程建在那里。 # 形式一:无参数 MySQL中: delimiter // create procedure p1 ( ) BEGIN select * from student ; select * from score where class_id = 1 ; update student set sname = '牛奶' where sname = '理解' ; END // delimiter ; MySQL执行: call p1 ( ) ; Python中执行: cursor . callproc ( 'p1' ) 删除: drop procedure [ if exists ]

Sqlserver存储过程—----传递数组、使用循环

梦想的初衷 提交于 2019-12-16 10:03:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景: 前一段时间做过一个公司内部的员工项目管理系统,其间有个 sqlserver 存储过程是要从 excel 文件中读取员工的项目信息,并从 db 中找出相关的的其他信息插入到一张员工表中。这里涉及两个难点:怎么向存储过程传递多条记录?在存储过程中怎么对这些记录一条条循环处理。 解决方案: 1. 怎么将 excel 中数据传入到存储过程中? 存储过程是没有办法接受数组参数的,我的做法是先把 excel 中的信息导入到一张全局的临时表中,在把临时表的表名传递给存储过程,在存储过程中使用临时表内容。 2. 怎么在存储过程中做循环处理? 在存储过程中新建一张临时表,将传递过来的全局临时表的信息保存在该表中,并且在表中添加一个 id 列,对记录从一开始计数。使用 count 函数计算记录的个数,使用 while 语句对 id 从 1 到 count 进行循环 代码: 1.创建临时表: IF OBJECT_ID('dbo.create_tempTable') IS NOT NULL DROP PROC dbo.create_tempTable; GO CREATE PROC dbo.create_tempTable AS CREATE TABLE ##tempexcel( pjid char(6),--项目id

更改用户host留下的坑

╄→尐↘猪︶ㄣ 提交于 2019-12-16 09:54:18
前言: 我们在创建数据库用户的时候都会指定host,即一个完整的用户可描述为 'username'@'host' 。创建用户时不显式指定host则默认为%,%代表所有ip段都可以使用这个用户,我们也可以指定host为某个ip或ip段,这样会仅允许在指定的ip主机使用该数据库用户。不过你也应该明白 'username'@'%' 和 'username'@'192.168.6.%' 是两个毫无关联的用户,这两个用户可以有不同的密码和权限,这里不建议创建多个同名不同host的用户,还有不要轻易更改用户的host,笔者曾经遇到过因为更改用户host引发的故障,下面将其分享出来,为你讲述前因后果。 1.故障模拟 当时为了规范安全,将某个程序用户的host由%改为了应用服务器ip段,过段时间业务反馈某些功能报错,经排查发现是因为无法调用存储过程(大家可以先思考下原因),下面模拟下故障操作。 # 原有用户、表、存储过程模拟创建 mysql> create user 'testuser'@'%' identified by '123456'; Query OK, 0 rows affected (0.04 sec) mysql> grant select,insert,update,delete,execute on `testdb`.* to 'testuser'@'%'; Query OK,

将存储过程的结果插入临时表

断了今生、忘了曾经 提交于 2019-12-16 09:52:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如何 SELECT * INTO [temp table] FROM [stored procedure] 进行 SELECT * INTO [temp table] FROM [stored procedure] ? 不是 FROM [Table] ,也没有定义 [temp table] ? 从 BusinessLine Select 所有数据到 tmpBusLine 可以正常工作。 select * into tmpBusLine from BusinessLine 我正在尝试相同的方法,但是使用返回数据的 stored procedure 并不完全相同。 select * into tmpBusLine from exec getBusinessLineHistory '16 Mar 2009' 输出信息: 消息156,级别15,状态1,第2行关键字“ exec”附近的语法错误。 我已经阅读了几个创建与输出存储过程具有相同结构的临时表的示例,该示例工作正常,但是最好不要提供任何列。 #1楼 如果您存储的proc的结果表太复杂而无法手动键入“ create table”语句,并且您不能使用OPENQUERY或OPENROWSET,则可以使用sp_help为您生成列和数据类型的列表。 获得列列表后

oracle存储过程中单引号及字符串拼接处理

筅森魡賤 提交于 2019-12-15 12:54:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解   1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。   select '''' from dual ----output:'   解释:第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更好理解:   select ' '' ' from dual ----output:'   2、连接符'||'导致了新一轮的转义:连接符号'||'左右的单引号没有任何的关系,除非'||'是作为字符串的一部分(这在动态SQL中很常见)。   select 'name'||'''' from dual ----output:name'   理解:||后面的作为一个字符串,即前后是',中间又是一个密集型单引号串'',因此第一个为转义功能   select 'name''''' from dual ----output:name''   理解:第一个和最后一个单引号作为字符串引用符,中间四个单引号两两转义 .   在举几个简单例子:   一个单引号,是最正常的情况,比如:'asdfas',这代表一个字符串,显示的内容是 asdfas ;  

MYSQL查看存储过程函数

不羁岁月 提交于 2019-12-15 08:39:49
查询数据库中的存储过程和函数 select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程 select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数 show procedure status; //存储过程 show function status; //函数 查看存储过程或函数的创建代码   show create procedure proc_name;   show create function func_name; 查看视图   SELECT * from information_schema.VIEWS //视图   SELECT * from information_schema.TABLES //表 查看触发器   SHOW TRIGGERS [FROM db_name] [LIKE expr]   SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G 来源: CSDN 作者: 运维自动化&云计算 链接: https://blog.csdn.net/h106140873/article/details