调用函数:

    public class SqlProcess
{
public int ReturnValue = ;
public DataSet ReturnSet = null;
public SqlDataAdapter adapter = null; public SqlProcess(String proc,String uid,String pwd,String data,String ip) {
uid = Regex.Replace(uid,@"[^\w]*","");
pwd = Regex.Replace(pwd,@"[^\w]*",""); SqlConnection conn = new SqlConnection(Config.DBConnString);
conn.Open();
SqlCommand sqlcmd = new SqlCommand(proc, conn);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add(new SqlParameter("uid", uid));
sqlcmd.Parameters.Add(new SqlParameter("pwd", pwd));
sqlcmd.Parameters.Add(new SqlParameter("data", data));
sqlcmd.Parameters.Add(new SqlParameter("IP", ip));
SqlParameter returnParm = new SqlParameter("return", SqlDbType.Int);
returnParm.Direction = ParameterDirection.ReturnValue;
sqlcmd.Parameters.Add(returnParm);
adapter = new SqlDataAdapter(sqlcmd);
ReturnSet = new DataSet();
adapter.Fill(ReturnSet);
conn.Close();
ReturnValue = Convert.ToInt32(returnParm.Value);
}
}

sql存储过程:

USE [ServiceDB]
GO
/****** Object: StoredProcedure [dbo].[CheckIFlightPrivate] Script Date: 06/02/2013 10:32:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- Batch submitted through debugger: SQLQuery15.sql|7|0|C:\Documents and Settings\Administrator\Local Settings\Temp\~vs1860.sql ALTER PROCEDURE [dbo].[CheckIFlightPrivate]
(
@userId varchar(32),
@pwdMD5 varchar(32),
@data varchar(1024),
@IP varchar(16)
--@result int output
)
AS
BEGIN
DECLARE @accountPwd varchar(32),
@returnValue int,
@ID bigint; IF @userId is NULL or @userId = ''
BEGIN
EXEC @returnValue = ErrCode 10001;
RETURN @returnValue;
END
IF @pwdMD5 is NULL or @pwdMD5 = ''
BEGIN
EXEC @returnValue = ErrCode 10002;
RETURN @returnValue;
END
--登录
SELECT Top 1 @ID=ID,@accountPwd=userPwd FROM TUserInfo WHERE UserID = @userId;
IF @@ROWCOUNT = 0
BEGIN
EXEC @returnValue = ErrCode 10003;
RETURN @returnValue;
END
--有用户 验证是否是用独立MD5 DECLARE
@userMD5 varchar(50),
@BeginDateTime datetime,
@EndDateTime datetime,
@PerDayTimes bigint,
@LastDayUseTimes bigint,
@PerMonthTimes bigint,
@LastMonthUseTimes bigint,
@PerYearTimes bigint,
@LastYearUseTimes bigint,
@TotalTimes bigint,
@TotalUseTimes bigint,
@AllowedClientIP varchar(50),
@LastDayUpdateTime datetime,
@LastMonthUpdateTime datetime,
@LastYearUpdateTime datetime; SELECT TOP 1
@userMD5 = UserMD5,
@BeginDateTime = BeginDateTime,
@EndDateTime = EndDateTime,
@PerDayTimes = PerDayTimes,
@LastDayUseTimes = LastDayUseTimes,
@PerMonthTimes = PerMonthTimes,
@LastMonthUseTimes = LastMonthUseTimes,
@PerYearTimes = PerYearTimes,
@LastYearUseTimes = LastYearUseTimes,
@TotalTimes = TotalTimes,
@TotalUseTimes = TotalUseTimes,
@LastDayUpdateTime = LastDayUpdateTime,
@LastMonthUpdateTime = LastMonthUpdateTime,
@LastYearUpdateTime = LastYearUpdateTime,
@AllowedClientIP = AllowedClientIP FROM TIFlightPrivate WHERE UserID=@ID;
--登录成功--验证功能 IF @@RowCount = 0
BEGIN
EXEC @returnValue = ErrCode 10010;
RETURN @returnValue;
END
ELSE
BEGIN
IF @userMD5 is NULL OR @userMD5 = ''
BEGIN
--用帐号的MD5;
IF @pwdMD5 <> @accountPwd
BEGIN
EXEC @returnValue = ErrCode 10004;
RETURN @returnValue;
END END
ELSE IF @pwdMD5 <> @userMD5
BEGIN
EXEC @returnValue = ErrCode 10006;
RETURN @returnValue;
END
END --验证 更新查询次数 -- 更新次数
if datediff(dd,@LastDayUpdateTime,getdate()) > 0
begin
set @LastDayUseTimes = 0;
set @LastDayUpdateTime = getdate();
end
if datediff(dd,dateadd(mm,1,@LastMonthUpdateTime),getdate()) > 0
begin
set @LastMonthUseTimes = 0;
set @LastMonthUpdateTime = getdate();
end
if datediff(dd,dateadd(yy,1,@LastYearUpdateTime),getdate()) > 0
begin
set @LastYearUseTimes = 0;
set @LastYearUpdateTime = getdate();
end IF @EndDateTime is not null and getdate() > @EndDateTime
begin
SELECT '该帐号已于'+convert(varchar,@EndDateTime,20)+'过期!' AS ErrInfo;
return 0;
end
else if @AllowedClientIP is not null and charindex(@IP,@AllowedClientIP) = 0
begin
SELECT '该帐号限制访问IP为:'+@AllowedClientIP AS ErrInfo;
return 0;
end
else if @PerDayTimes is not null and @PerDayTimes>0 and @LastDayUseTimes >= @PerDayTimes
begin
SELECT '该帐号已经超过当天查询次数:'+ convert(varchar,@perDayTimes) +'次' AS ErrInfo;
return 0;
end
else if @PerMonthTimes is not null and @PerMonthTimes>0 and @LastMonthUseTimes >= @PerMonthTimes
begin
SELECT '该帐号已经超过当月查询次数:'+ convert(varchar,@PerMonthTimes) +'次' AS ErrInfo;
return 0;
end
else if @PerYearTimes is not null and @PerYearTimes>0 and @LastYearUseTimes >= @PerYearTimes
begin
SELECT '该帐号已经超过当年查询次数:'+ convert(varchar,@PerYearTimes) +'次' AS ErrInfo;
return 0;
end
else if @TotalTimes is not null and @TotalTimes>0 and @TotalUseTimes >= @TotalTimes
begin
SELECT '该帐号已经超过总查询次数:'+ convert(varchar,@TotalTimes) + '次' AS ErrInfo;
return 0;
end
else
begin
update TIFlightPrivate set LastDayUseTimes=@LastDayUseTimes+1,
LastMonthUseTimes=@LastMonthUseTimes+1,
LastYearUseTimes=@LastYearUseTimes+1,
TotalUseTimes=@TotalUseTimes+1,
LastDayUpdateTime=@LastDayUpdateTime,
LastMonthUpdateTime=@LastMonthUpdateTime,
LastYearUpdateTime=@LastYearUpdateTime Where UserID=@ID;
--set @result = '该帐号有效日期至:'+ convert(varchar,@EndDateTime,120) + ',当天剩余次数,当月剩余次数,当年剩余次数,总剩余次数';
end --默认城市地方
return 1
END

SQL存储过程的调用及写法的更多相关文章

  1. SQL存储过程来调用webservice

    如果用存储过程来调用webservice 那存储过程的功能感觉能做好多事情了? 别自欺欺人了.那些功能还是webservice来实现的... 完整的webservice代码:(也是默认的,新建.asm ...

  2. SQL 存储过程里调用另一个存储过程

    由于创建了一个存储过程,并且要在另一个存储过程里调用这个存储过程所以在网上找了一下相关的代码,现在总结一下,防止以后还会用到 由于这次我写的存储过程只需要返回一个求和的结果,所以我使用了output ...

  3. SQL——存储过程实例 调用带参数的过程(成绩输出)

    create or replace procedure test_score(input in number,output out char) is begin then begin output : ...

  4. SQL存储过程概念剖析

    一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...

  5. (转载)delphi 中如何调用sql 存储过程

    delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...

  6. discuz 万能SQL查询调用语句写法

    首先在最底层source\class\table写入底层安全调用文件例如:table_common_friendlink.php 代码: <?php /** * [Discuz!] (C)200 ...

  7. C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程

    1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...

  8. sql 存储过程 in 的两种写法

    最近又忘记存储过程 除了exec 动态写法的另外一种,这里记录一下,方便查找 写法1,动态语句 CREATE PROCEDURE sp_CountShiftWish @strids varchar ( ...

  9. 在 SQL Server 的存储过程中调用 Web 服务

    介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...

随机推荐

  1. 批量另存mxd

    在GIS数据处理中,批量操作是经常遇到的问题,Python脚本是解决问题的最好方法.现在需要将arcgis10.1的mxd另存为10.0,不仅数量较多,而且每个mxd要素和标注非常多,手动来操作确实慢 ...

  2. 谈谈GIS与地理学语言

    二十一世纪初,也就是我们这代人生活的昨天和今天,伴随着"空间觉醒",GIS逐渐被人们所熟知.以地学原理为依托的地理信息系统,在学术界被称为是第三代地理学语言.这个概念首先是由号称是 ...

  3. mac jdk 6设置

    新装的mac 系统10.10 ,jdk是1.8,因为一些工具要使用 jdk 6,以下是设置过程 查看版本 java -version 查看java是再哪:在/usr/bin/java whereis ...

  4. 高级SQL语句

    改变数据 insert record 插入一行 insert into foods (name, type_id) values ('Cinnamon Bobka', 1); 如果在insert语句中 ...

  5. LruCache详解之 Android 内存优化

    概念: LruCache 什么是LruCache? LruCache实现原理是什么? 这两个问题其实可以作为一个问题来回答,知道了什么是 LruCache,就只然而然的知道 LruCache 的实现原 ...

  6. Android studio 修改包名 和 版本号

  7. iOS启动过程

    1.main函数 | 2.UIApplicationMain      * 创建UIApplication对象      * 创建UIApplication的delegate对象 | 3.delega ...

  8. iOS不同IDS说明

    1.Vindor标识符  identifierForVendor 一个英文字符串,对于相同的产品商(这里指com.zhang.*,也就是前缀一样),其唯一的标识设备. * 这个值对于相同的产品商在相同 ...

  9. [转载]50个Demo展示HTML5无穷的魅力

    Flash和HTML5的比较已经成为现在最热门的主题之一,我们不去争论哪个好哪个不好.和HTML5在很酷的动画和简单的游戏等方面一样,除非HTML5在未来几年有一些重大发展,否则Flash在富内容网页 ...

  10. 在Asp.net MVC使用jqGrid--代码少点再少点

    本示例显示了如何动态生成前端jqGrid代码,一般情况仅一行代码: <%=Html.jqGrid<TestModel>(@"#jqT", "Test&q ...