文档章节

用exec sp_executesql @sql,N'@b int output',@b ou...

suhu
 suhu
发布于 2013/07/10 15:38
字数 454
阅读 137
收藏 0

USE [wwdthdb00]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER  PROCEDURE [dbo].[wwdadm_lottery]
(

//这里是声明全局变量
@F_member_id varchar(12)

)
AS
begin

//这里是声明局部变量
declare @sql nvarchar(1000),@sq nvarchar(1000),@F_cm1 int,@F_cm2 int,@b nvarchar(100),@F_field_set_pm int,@F_pm3 int,@Sui_ji_count int,@F_cm int,@a nvarchar(100),@F_debt2 money,@F_month_cm_id int,@F_field_set_id int
begin transaction
   set @F_cm=(SELECT F_cm FROM T_member_information where  F_cm>=1 and F_member_id=@F_member_id)
   set @F_month_cm_id=(SELECT F_month_cm_id FROM T_month_cm where F_flag='0')
   set @F_cm1=(@F_cm/10)
   set @F_cm2=(@F_cm%10)
   set @Sui_ji_count=cast(ceiling(rand()*5)as int)               //这里是使用随机函数并将其转为int型
   set @F_field_set_pm =(select F_field_set_pm from T_lottery_field_set where F_lottery_id=@Sui_ji_count)--抽到的对应F_field_set_pm
   set @sql='set @b=(select F_'+cast(@Sui_ji_count as varchar(10))+' from T_lottery_details where F_lottery_id='+cast(@F_cm2 as varchar(100))+')'--小于10时的字段值
   exec sp_executesql @sql ,N'@b int output',@b output       //用exec sp_executesql取出查询到@sql语句的数存到变量@b

  set @sq='set @a=(select F_'+cast(@Sui_ji_count as varchar(10))+' from T_lottery_details where F_lottery_id='+cast(10 as varchar(100))+')'--等于10或者大于10查找到的字段值
   exec sp_executesql @sq ,N'@a int output',@a output     //用exec sp_executesql取出查询到的数存到变量@a

   set @F_debt2=(select F_debt from [T_member_information] where F_member_id=@F_member_id)
if @F_cm>10
begin
 set @F_pm3=@b*@F_field_set_pm+@F_cm1*@a*@F_field_set_pm          //使用变量@a和@b

     ---//以上是大于11或者等于11F_CM的
end

else

  //以下是sql sever的常规语句与使用exec sp_executesql没什么关系
begin
if @F_cm=10 --大于等于10时
set @F_pm3=@F_cm1*@a*@F_field_set_pm
else --小于10
set @F_pm3=@b*@F_field_set_pm
end

  if(@F_debt2<0)---欠款
begin
    if(@F_pm3>=(-@F_debt2))
UPDATE [T_member_information] set F_cm=F_cm-@F_cm1*10-@F_cm2,F_pm=(F_pm+@F_pm3+@F_debt2),F_debt=0 where F_member_id=@F_member_id
    else
UPDATE [T_member_information] set F_cm=F_cm-@F_cm1*10-@F_cm2,F_debt=(F_debt+@F_pm3) where F_member_id=@F_member_id
end
 else
  begin
UPDATE [T_member_information] set F_cm=F_cm-@F_cm1*10-@F_cm2,F_pm=F_pm+@F_pm3 where F_member_id=@F_member_id
  end       
INSERT INTO T_member_lottery([F_month_cm_id],[F_member_id],[F_field_set_id],[F_member_lottery_cm],F_flag) VALUES(@F_month_cm_id, @F_member_id, @F_field_set_id, @F_field_set_pm,'1')  
    if @@error=0
    begin
    commit
        --return 0
    end

    else

    begin
        rollback
        --return 1
end
end

© 著作权归作者所有

suhu
粉丝 0
博文 1
码字总数 454
作品 0
茂名
私信 提问
SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果

SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果( exec sp_execute 关 键 词: 在编写sql语句或存储过程中,难免会有碰到语句中表名或某一字段名不确定,要根据条件来,这时,...

zting科技
2017/01/18
0
0
sp_executesql介绍和使用

execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql spexecutesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: exec spexecutesql ...

zchuanzhao
2016/03/08
13
0
常用T-SQL语句整理

/ 查看服务器上的数据库对象列表 ---------------------------------------/ EXEC sp_databases / 查看当前数据库某个对象的信息 ---------------------------------------/ EXEC sphelp Hbc......

点儿都不扯
2015/02/10
0
0
数据库分页存储过程

CREATE PROCEDURE [dbo].[P_DOCGetTest]--20,2,0 @orderCellName NVARCHAR(50), @sortOrder NVARCHAR(50), @pageSize INT, @pageIndex INT, @RowCount INT OUTPUT AS BEGIN DECLARE @SQL NVA......

长平狐
2012/10/23
27
0
SQL 注入攻防入门详解

SQL 注入攻防入门详解 原文出处: 滴答的雨 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各...

Yomut
2016/08/09
71
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
今天
12
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
4
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.3K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部