调用函数:

    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. 解决windows防火墙无法启动的问题

    windows防火墙突然无法开启,找个各种方法,最后还是通过微软自动的修复工具修复的: 网址如下: https://support.microsoft.com/zh-cn/mats/windows_f ...

  2. App Transport Security has blocked a cleartext

    错误描述: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecu ...

  3. iOS 中内存分配与分区

    关于RAM ROM RAM与ROM就是具体的存储空间,统称为存储器 RAM(random access memory):运行内存,CPU可以直接访问,读写速度非常快,但是不能掉电存储.它又分为: 动态 ...

  4. Xcode常见错误汇总

    1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...

  5. JSON字符串与JSON对象

    JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法). JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用 ...

  6. Ubuntu 14.04 软件源服务器列表

    http://wiki.ubuntu.com.cn/Template:14.04source 服务器列表 可将 http://cn.archive.ubuntu.com/ubuntu/ 替换为下列任意 ...

  7. mac 远程连接服务器

    很多刚用mac的同学 可能会纠结,连接远程服务器咋整? 有没有类型windows上的securecrt 其实,完全可以不用: mac自带的终端就可以搞定:终端terminal 如何连接远程服务器? s ...

  8. Maven基础配置--nexus私服配置

    登录nexus私服后台,按照下图1-3的顺序进行添加仓库: 其中步骤3有三种仓库类型(Type)进行选择 1. Hosted Repository:本地仓库,在私服服务器上存放用户自行上传的jar包: ...

  9. JavaScript Patterns 7.1 Singleton

    7.1 Singleton The idea of the singleton pattern is to have only one instance of a specific class. Th ...

  10. [Linux 性能检测工具]VMSTAT

    VMSTAT NAME:          Vmstat: 报告虚拟内存统计 语法 :        vmstat [-a] [-n] [-t] [-S unit] [delay [ count]] ...