存储过程

调用带参数的存储过程,并返回结果集--oracle

泄露秘密 提交于 2020-02-25 11:40:03
调用插入数据的存储过程: // 调用存储过程来插入一条记录 BOOL CDBTestAppDlg::InsertRecord() { CAdoParameter param1, param2, param3; CAdoCommand comm; if(ConnTODB()) { comm.SetConnection(m_pConnection); param1.SetSize(20); param1.SetName("C_Name"); param1.SetDirection(adParamInput); param1.SetType(adVarChar); // varchar2 param1.SetValue((CString)"hello113"); // 这里必须用类型转换,默认的参数类型为bool,所以转换会出错 comm.Append(param1.GetParameter()); param2.SetName("C_Age"); param2.SetDirection(adParamInput); param2.SetType(adInteger); // Integer param2.SetValue(21); comm.Append(param2.GetParameter()); param3.SetName("C_ExeTime"); param3

mybatis调用存储过程

坚强是说给别人听的谎言 提交于 2020-02-25 11:31:40
1. MySQL创建存储过程   完成分页查询功能,同时返回参数记录总条数信息: DELIMITER // CREATE PROCEDURE sp_article_page( IN pageIndex BIGINT, IN pageSize BIGINT, IN te_id BIGINT, IN grade_id INT, IN subject_id BIGINT, OUT total_count BIGINT ) BEGIN -- set @subjectId = subject_id; -- 可能为null SET @sql = 'SELECT * FROM tb_article '; SET @sqlWhere = CONCAT(' WHERE article_author = ', te_id); -- 教师 -- 大纲 IF (grade_id IS NOT NULL) OR (subject_id IS NOT NULL) THEN SET @sqlWhere = CONCAT(@sqlWhere, ' and outline_id in (select o_id from tb_outline where 1=1 '); IF grade_id IS NOT NULL THEN SET @sqlWhere = CONCAT(@sqlWhere, ' and grade

mybatis 调用存储过程

只谈情不闲聊 提交于 2020-02-25 11:31:23
1.定义存储过程 2.调用存储过程 <!-- public void getPageByProcedure(); 1、使用select标签定义调用存储过程 2、statementType="CALLABLE":表示要调用存储过程 3、{call procedure_name(params)} --> <select id="getPageByProcedure" statementType="CALLABLE" databaseId="oracle"> {call hello_test( #{start,mode=IN,jdbcType=INTEGER}, #{end,mode=IN,jdbcType=INTEGER}, #{count,mode=OUT,jdbcType=INTEGER}, #{emps,mode=OUT,jdbcType=CURSOR,javaType=ResultSet,resultMap=PageEmp} )} </select> <resultMap type="com.atguigu.mybatis.bean.Employee" id="PageEmp"> <id column="EMPLOYEE_ID" property="id"/> <result column="LAST_NAME" property="email"/> <result

触发器、存储过程和事务处理使用

馋奶兔 提交于 2020-02-25 07:56:13
-- 创建数据库 scroll dynamic create database Database1 GO -- 置此数据库为当前数据库 use Database1 GO -- 创建学生表 create table student ( SID varchar ( 20 ) primary key , -- 学生编号 SName varchar ( 20 ), -- 学生姓名 SClass varchar ( 20 ), -- 学生班级 SSex varchar ( 10 ), -- 学生性别 SScore float default ( 0 ) check (SScore >= 0 ) -- 学生平均分 ) GO -- 创建课程表 create table class ( EID varchar ( 20 ) primary key , -- 课程编号 EName varchar ( 20 ), -- 课程名称 ETime int check (ETime >= 0 ) -- 课程课时 ) GO -- 创建分数表 create table score ( SID varchar ( 20 ), -- 学生编号 EID varchar ( 20 ), -- 课程编号 EScore float , -- 课程分数 primary key (SID,EID), -- 定义主码

利用SQL注入漏洞登录后台的实现方法

懵懂的女人 提交于 2020-02-25 03:50:06
一、SQL注入的步骤 a) 寻找注入点(如:登录界面、留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作 e) DBMS接受返回的结果,并处理,返回给用户 因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活的话)。 下面,我通过一个实例具体来演示下SQL注入 二、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc) 1) 前期准备工作 先来演示通过SQL注入漏洞,登入后台管理员界面 首先,创建一张试验用的数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) NOT NULL, `password` varchar(64) NOT NULL, `email` varchar(64) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 添加一条记录用于测试: INSERT

sql2000和sql2005分页存储过程

倾然丶 夕夏残阳落幕 提交于 2020-02-24 07:35:35
MSSQL2000 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[Proc_Page2000] ( @TabName nvarchar(100)='',--表名、视图名、查询语句 @PageSize int=10, --每页的大小(行数) @PageIndex int=1, --要显示的页 从0开始 @FieldShow nvarchar (200)='*', --要显示的字段列表 @FieldKey nvarchar (100)='id', --主键 @WhereStr nvarchar (2000)='1=1', @FieldOrder int=1, --排序 1desc0asc @RecordCount int output ) as declare @sql nvarchar(2000) if (@WhereStr = '') begin set @WhereStr = '1=1' end declare @tsql nvarchar(200) set @tsql=N'select @RecordCount = count(1) from ' + @TabName + ' where ' + @WhereStr exec sp_executesql @tsql,N'

SQL 存储过程

旧巷老猫 提交于 2020-02-23 16:24:54
一、定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @user1='张三' print @user1 declare @user2 nvarchar(50) select @user2 = Name from ST_User where ID=1 print @user2 --使用update语句赋值 declare @user3 nvarchar(50) update ST_User set @user3 = Name where ID=1 print @user3 二、表、临时表、表变量 --创建临时表1 create table #DU_User1 ( [ID] [int] NOT NULL, [Oid] [int] NOT NULL, [Login] [nvarchar](50) NOT NULL, [Rtx] [nvarchar](4) NOT NULL, [Name] [nvarchar](5) NOT NULL, [Password] [nvarchar](max) NULL, [State] [nvarchar](8) NOT NULL ); --向临时表1插入一条记录 insert into #DU_User1 (ID

存储过程分页

≡放荡痞女 提交于 2020-02-22 15:17:57
//数据库存储过程 --存储过程 create PROCEDURE commonPagination @columns varchar(500), --要显示的列名,用逗号隔开 @tableName varchar(100), --要查询的表名 @orderColumnName varchar(100), --排序的列名 @order varchar(50), --排序的方式,升序为asc,降序为 desc @where varchar(100), --where 条件,如果不带查询条件,请用 1=1 @pageIndex int, --当前页索引 @pageSize int, --页大小(每页显示的记录条数) @pageCount int out --总页数,输出参数 as begin declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句 declare @sqlSelect nvarchar(1000) --查询语句 set @sqlRecordCount=N'select @recordCount=count(*) from ' +@tableName + ' where '+ @where declare @recordCount int --保存总记录条数的变量 exec sp_executesql

java调用存储过程

本小妞迷上赌 提交于 2020-02-22 00:46:55
创建存储过程的脚本, 使用sqlserver2000 中的pubs 数据库中的 jobs表为例. create procedure showAll as select * from jobs create procedure obtainJob_desc @outputParam varchar ( 20 ) output, @id int as select @outputParam = job_desc from jobs where job_id = @id create procedure obtainReturn as declare @ret int select @ret = count ( * ) from jobs return @ret declare @ret int exec @ret = obtainReturn print @ret 用来获得连接的函数 public Connection getConnection() ... { Connection con = null ; try ... { Class.forName( " com.microsoft.jdbc.sqlserver.SQLServerDriver " ); con = DriverManager.getConnection( " jdbc:microsoft:sqlserver:/

mysql 存储过程及事件

£可爱£侵袭症+ 提交于 2020-02-21 10:24:59
虽说现在不用这种,mysql本身已经很忙碌了,还要做这些操作不合适,但有时候别人的代码会写这些,所以记录下查找的、 查询数据库中的存储过程和函数 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 如果有存储过程,在代码里边找不到调用存储过程的函数。