sql脚本存储过程

项目中经常遇到平台版本升级时,升级脚本的问题。高版本的平台有可能在原平台基础上增加新的字段,或者修改原平台某个表定义的值。

最常见的就是数据字段的值。有时候经常要判断某个脚本是否已执行,某个表的字段是否已经存在。这时候,就需要写sql存储过程来实现。

下面一些例子供参考:

 1 DROP PROCEDURE IF EXISTS insertSysValue;
 2 CREATE
 3 PROCEDURE insertSysValue()
 4 BEGIN
 5   DECLARE cnt INT DEFAULT 0;
 6   SET cnt = 0;
 7   SELECT count(*)
 8   INTO
 9     cnt
10   FROM
11     sys_info
12   WHERE
13     parameter_name = ‘AutoSetDeviceStyle‘;
14   IF cnt = 0 THEN
15     INSERT INTO `sys_info` (`parameter_name`, `value_type`, `int_value`, `str_value`, `create_time`) VALUES (‘AutoSetDeviceStyle‘, ‘0‘, ‘8‘, NULL, ‘2017-08-18 18:22:30‘);
16   END IF;
17
18   SET cnt = 0;
19   SELECT count(*)
20   INTO
21     cnt
22   FROM
23     sys_info
24   WHERE
25     parameter_name = ‘AutoSetDeviceTime‘;
26   IF cnt = 0 THEN
27     INSERT INTO `sys_info` (`parameter_name`, `value_type`, `int_value`, `str_value`, `create_time`) VALUES (‘AutoSetDeviceTime‘, ‘1‘, NULL, ‘00:20:00‘, ‘2017-08-18 18:22:30‘);
28   END IF;
29 END;
30 CALL insertSysValue();
31 DROP PROCEDURE IF EXISTS insertSysValue;

某个字段处理:

 1 -- ----------------------------------
 2 -- 字段is_online处理---
 3 -- ----------------------------------
 4
 5 DROP PROCEDURE IF EXISTS camera_info_is_online;
 6 CREATE PROCEDURE camera_info_is_online()
 7 BEGIN
 8 DECLARE  CurrentDatabase VARCHAR(100);
 9 SELECT DATABASE() INTO CurrentDatabase;
10 IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema=CurrentDatabase AND table_name = ‘camera_info‘ AND column_name = ‘is_online‘) THEN
11 ALTER TABLE camera_info ADD is_online int(2) DEFAULT -1 COMMENT ‘监控点在线状态:0-不在线,1-在线,-1-未知‘;
12 END IF;
13 END;
14 CALL camera_info_is_online();
15 DROP PROCEDURE IF EXISTS camera_info_is_online;
16
17 -- ----------------------------------
18 -- 更新is_online字段默认值---
19 -- ----------------------------------
20 update camera_info set is_online=-1 ;

时间: 2024-10-25 07:59:31

sql脚本存储过程的相关文章

.NET调用osql.exe执行sql脚本创建表和存储过程

using System;using System.Diagnostics;using System.Windows.Forms; namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        } private void button1_Click(objec

SQL Server 存储过程具体解释

SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理复杂的操作时,程序的可读性更强.网络的负担更小. 使用存储过程封装事务性能更佳. 能有效的放注入,安全性更好. 可维护性高.在一些业务规则发生变化时.有时仅仅需调整存储过程就可以.而不用修改和重编辑程序. 更好的代码重用. ◆ 缺点: 存储过程将给server带来额外的压力. 存储过程多多时维护比較

简单的如何创建sql server存储过程

学习sql server数据库,sql server存储过程的建立方法是一定要知道的,下面将教您如何建立sql server存储过程,希望对您有所帮助. 在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例. 展开“数据库”.sql server存储过程所属的数据库以及“可编程性”. 右键单击“存储过程”,再单击“新建存储过程”. 在“查询”菜单上,单击“指定模板参数的值”. 在“指定模板参数的值”对话框中,“值”列包含参数的建议值.接受这些值或将其替换为新值,再单击“确定”. 在查询编辑

SQL扫描并执行文件夹里的sql脚本

原文:SQL扫描并执行文件夹里的sql脚本 场景:项目数据库操作全部使用存储过程实现.每天都会有很多存储过程更新/增加,人工对测试环境中存储过程更新,会有一定概率出现遗漏,也麻烦!所以,需要一个工具将文件夹中所有存         储过程执行一次.实现:首先想到的是用c#,很简单,而且功能强大.        但是,我想尝试一下使用sql实现同样的功能,然后就发现了xp_cmdshell这个强大而又危险的东西!查询分析器执行,无需传入数据库用户名.密码,传入目录,就会按照脚本文件名排      

SQL Server里面导出SQL脚本(表数据的insert语句)

转载自:http://hi.baidu.com/pigarmy/blog/item/109894c445eab0a28326ac5a.html 最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能.BAIDU一下得到如下方法(亲测OK) 用这个存储过程可以实现: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @c

mysql备份指定条件的sql脚本

mysqldump -uroot -proot DBName tabaleName -w" 条件='????'  "  --lock-all-tables > 目标路径 转自:http://blog.chinaunix.net/uid-27038861-id-3591736.html mysqldump备份还原和mysqldump导入导出语句大全详解 mysqldump备份: mysqldump -u用户名 -p密码 -h主机 数据库 a -w "sql条件"

mysql source 执行sql脚本,中文变量不显示问题或乱码问题

执行脚本内容如下: SET @pre_version=2017080901; SET @cur_version=2017090401; SET @ver_desc = '测试脚本'; CALL pro_exec_update_db_v_1(@pre_version,@cur_version,'',1,0,''); CALL pro_exec_update_db_v_1(@pre_version,@cur_version,@ver_desc,2,0,''); 存储过程如下: DELIMITER |

SQL 系统存储过程用法整理

---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date   : 2010-07-06 23:13:19 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) --          Jul  9 2008 14:43:34 --    

删除所有约束、表、视图等SQL脚本

--删除所有约束.表.视图等SQL脚本 --############################################### --删除所有外键约束 --############################################### DECLARE @SQL VARCHAR(99) DECLARE CUR_CONSTRAINT CURSOR LOCAL FOR SELECT 'ALTER TABLE '+ CASE WHEN O.schema_id IS NOT NU