sql sever EXEC用法

1.执行存储过程

// 执行存储过程无参数
EXEC 存储过程名 

// 执行存储过程有参数
EXEC 存储过程名  参数1,参数2,...

2.执行动态Sql语句(不输出变量)

// 执行动态Sql 语句
DECLARE @sql NVARCHAR(max)
set  @sql='......'
--记得加括号要不然会认为是执行存储过程,会报错
EXEC (@sql)

3.执行动态Sql语句(输出变量)

// EXEC sp_executesql 执行动态Sql 语句
DECLARE @count INT
DECLARE @id INT=1
SET @sql=' select @count=count(*)  from  表 where id=@id
EXEC sp_executesql @sql,N'@count int out',@count OUT,@id
--外面就能得到@count 的值了
EXEC (@sql)
  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【简答题】 请阅读下面分页存储过程的代码,并且为每一行代码加上注释。 create procedure pagequery ( @sqlTable nvarchar(200), ----待查询表名 @sqlColumns nvarchar(500) , ----待显示字段 @sqlWhere nvarchar(1000) , ----查询条件,不需where @sqlSort nvarchar(500) , ----排序字段,不需order by @pageIndex int, ----当前页 @pageSize int, ----每页显示的记录数 @rowTotal int = 1 output ----返回总记录数 ) as begin set nocount on; -- 获取记录总数 declare @sqlcount nvarchar(1000) ; set @sqlcount = N' select @rowTotal=count(*) from '+@sqlTable +' where 1=1 '+ @sqlWhere; exec sp_executesql @sqlcount,N'@rowTotal int out ',@rowTotal out ; -- 返回数据查询 declare @sqldata nvarchar(1000) ; set @sqldata=' select '+ @sqlColumns + ' from (select *,Row_number() over(order by '+ @sqlSort +') as RN from '+ @sqlTable +' where 1=1 '+ @sqlWhere+') as TR where RN>'+ cast(@pageSize*@pageIndex as varchar(20))+' and RN<'+ cast((@pageSize*(@pageIndex+1)+1) as varchar(20)); exec sp_executesql @sqldata ; end --调用如下: declare @totalrow int; exec pagequery 'employee','*','','ID asc',1,10,@totalrow output; select @totalrow; 2)MySQL 版本 create procedure pagequery ( in sqlTable varchar(256), in sqlColumns varchar(512), in sqlWhere varchar(1024), in sqlSort varchar(512), in pageIndex int, in pageSize int, out rowTotal int ) begin declare start_row int default 0; set start_row = pageIndex* pageSize; -- 获取记录总数 set @sqlcount = concat('select count(*) into @rows_total from ', sqlTable, ' where 1=1 ', sqlWhere); prepare count_stmt from @sqlcount; execute count_stmt; deallocate prepare count_stmt; set rowTotal = @rows_total; -- 返回数据查询 set @sqldata = concat('select ', sqlColumns, ' from ', sqlTable, ' where 1=1 ', sqlWhere, ' order by ', sqlSort,' limit ', start_row, ',', pageSize); prepare main_stmt from @sqldata; execute main_stmt; deallocate prepare main_stmt; end --调用如下: call pagequery('emp
最新发布
05-24
1)SQL Server 版本 ``` create procedure pagequery ( @sqlTable nvarchar(200), -- 待查询表名 @sqlColumns nvarchar(500) , -- 待显示字段 @sqlWhere nvarchar(1000) , -- 查询条件,不需where @sqlSort nvarchar(500) , -- 排序字段,不需order by @pageIndex int, -- 当前页 @pageSize int, -- 每页显示的记录数 @rowTotal int = 1 output -- 返回总记录数 ) as begin set nocount on; -- 不返回行数 -- 获取记录总数 declare @sqlcount nvarchar(1000); set @sqlcount = N'select @rowTotal=count(*) from '+@sqlTable +' where 1=1 '+ @sqlWhere; exec sp_executesql @sqlcount,N'@rowTotal int out ',@rowTotal out; -- 返回数据查询 declare @sqldata nvarchar(1000); set @sqldata='select '+ @sqlColumns + ' from (select *,Row_number() over(order by '+ @sqlSort +') as RN from '+ @sqlTable +' where 1=1 '+ @sqlWhere+') as TR where RN>'+ cast(@pageSize*@pageIndex as varchar(20))+' and RN<'+ cast((@pageSize*(@pageIndex+1)+1) as varchar(20)); exec sp_executesql @sqldata; end -- 调用如下: declare @totalrow int; exec pagequery 'employee','*','','ID asc',1,10,@totalrow output; select @totalrow; ``` 2)MySQL 版本 ``` create procedure pagequery ( in sqlTable varchar(256), -- 待查询表名 in sqlColumns varchar(512), -- 待显示字段 in sqlWhere varchar(1024), -- 查询条件,不需where in sqlSort varchar(512), -- 排序字段,不需order by in pageIndex int, -- 当前页 in pageSize int, -- 每页显示的记录数 out rowTotal int -- 返回总记录数 ) begin declare start_row int default 0; set start_row = pageIndex * pageSize; -- 获取记录总数 set @sqlcount = concat('select count(*) into @rows_total from ', sqlTable, ' where 1=1 ', sqlWhere); prepare count_stmt from @sqlcount; execute count_stmt; deallocate prepare count_stmt; set rowTotal = @rows_total; -- 返回数据查询 set @sqldata = concat('select ', sqlColumns, ' from ', sqlTable, ' where 1=1 ', sqlWhere, ' order by ', sqlSort,' limit ', start_row, ',', pageSize); prepare main_stmt from @sqldata; execute main_stmt; deallocate prepare main_stmt; end -- 调用如下: call pagequery('employee', '*', '', 'ID asc', 1, 10, @totalrow); select @totalrow; ``` 注释已经添加在代码中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值