sql存储过程动态执行sql

1.动态执行sql
create proc proc_GetWorkHourByEmpId
@key1 varchar(100), --关键字
@user_group1 varchar(100),--用户分组
as
begin
declare @SqlSelect nvarchar(2000),@ParmDefinition nvarchar(max);
set @SqlSelect=' select * from User where 1=1 ' --sql语句
set @ParmDefinition=N'@key nvarchar(10),@user_group nvarchar(50) ';  --参数声明

--条件判断
if(@key1 is not null and @key1!='')
begin
set @SqlSelect=@SqlSelect+' and (Emp_Name like @key)'
end

if(@user_group1 is not null and @user_group1!='')
begin
set @SqlSelect=@SqlSelect+' and User_Grouping like @user_group '
end

--执行sql

EXEC sp_executesql @SqlSelect,@ParmDefinition,@key=@key1,
@user_group=@user_group1
end

2.动态执行sql ,有返回值(output必须加)

--根据录入人获取工时统计信息 zxk
ALTER proc [dbo].[proc_GetWorkHourByProject]
@key1 varchar(100),

@totalCount1 int output--返回总条数

as
begin
declare @SqlSelect nvarchar(2000),@ParmDefinition nvarchar(max);
set @ParmDefinition=N'@totalCount int output,@key varchar(100)';

set @SqlSelect='select @totalCount=count(*) from User where 1=1 '
if(@key1 is not null and @key1 !='')
begin
set @SqlSelect=@SqlSelect+' and name like @key '
end

 

EXEC sp_executesql @SqlSelect ,@ParmDefinition,@key=@key1,@totalCount=@totalCount1 output

end

 

转载于:https://www.cnblogs.com/zxking/p/8656149.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值