日期:2014-05-18  浏览次数:20521 次

写一个验证数据和插入数据的存储过程
MSSQL大虾们,是这样的
我想在MSSQL里写个这样的存储过程来给一个ASP网页里调用
存储过程接收一个字符串参数,里面包含一个帐号、一个密码,然后是若干个数据内容field1,field2,field3
  例如 构成这样一个字符串 admin,123456,field1,field2,field3 传进存储过程
然后存储过程里会 先到[帐号表]里去找有没有admin表,并看密码是不是123456
如果验证通过,则把field1,field2,field3 这三个字段插入到另外一个表[datas],并返回成功
如果验证不通过,则返回失败

由于本人对存储过程不太熟悉,暂时还只会写无参数的存储过程
所以不知道怎么写,麻烦知道的指点一下
谢谢了!!!

------解决方案--------------------
为什么要用存储过程实现呢
------解决方案--------------------
引用楼主 Kvci 的帖子:
MSSQL大虾们,是这样的
我想在MSSQL里写个这样的存储过程来给一个ASP网页里调用
存储过程接收一个字符串参数,里面包含一个帐号、一个密码,然后是若干个数据内容field1,field2,field3
例如 构成这样一个字符串 admin,123456,field1,field2,field3 传进存储过程
然后存储过程里会 先到[帐号表]里去找有没有admin表,并看密码是不是123456
如果验证通过,则把field1,field2,field3 这三个字段插入到另外一个表…

------解决方案--------------------
create proc laowan688
@admin nvarchar(20),
@mess int
as
set nocount on
if (select admin from table admin=@admin<>'')and(select mess from table mess=@mess<>'' )
begin
return 1
end
else
begin
return 0
end

------解决方案--------------------
至于查旬什么的,自己写吧。
------解决方案--------------------
SQL code


create proc wsp
@val varchar(500)
as
declare @v varchar(500)
--判断帐号表中是否存在该用户
if exists(select 1 from 帐号表 where 用户名字段=left(@val,charindex(',',@val)-1))
begin
    set @v=replace(substring(@val,charindex(',',@val)+1,len(@val)),',','.')
    if exists(select 1 from 帐号表 where 用户名字段=left(@val,charindex(',',@val)-1) and 密码字段=PARSENAME(@v,4))
    begin
        insert into datas (field1,field2,field3) select PARSENAME(@v,3),PARSENAME(@v,2),PARSENAME(@v,1)
        raiserror('成功',16,1)
    end
    else
        raiserror('密码错误',16,1)
end
else
    raiserror('该用户名不存在',16,1)

------解决方案--------------------
探讨
SQL code

create proc wsp
@val varchar(500)
as
declare @v varchar(500)
--判断帐号表中是否存在该用户
if exists(select 1 from 帐号表 where 用户名字段=left(@val,charindex(',',@val)-1))
begin
set @v=replace(substring(@val,charindex(',',@val)+1,len(@val)),',','.')
if exists(select 1 from 帐号表 where 用户名字段=left(@val,charindex(',',@val)-1) and 密码字段=PARSENAME(@v,4))
begi…

------解决方案--------------------
这个没必要用存储过程处理,用程序处理更方便。
------解决方案--------------------
探讨
谢谢各位回复啊
我先试试
我觉得用存储过程实现,比自己去判断要快啊
我是用ASP,如果我自己去判断,也就是在ASP里查询一下,核对密码之后再插入数据
因为我要这样插入好多条数据,所以我觉得不会比存储过程快,不知道分析得对不对?

能不能提高一点要求,我想
把帐号和密码数据加密,然后我把整个字符串往存储过程里一传
在存储过程里解密,然后核对密码,再插入数据
其实关键问题就是存储过程里能够对字符串…

------解决方案--------------------
首先,你把帐号密码编码后往数据库里是为了防谁?

如果你的web服务器与数据库的通信都被截获了,那么你做这些根本就没意义。

其次,你把表名,条件等等全都以字串传入存储过程,想法是存储过程通用。
而你这个通用的存储过程对业务上的逻辑却大有不同,那么过程要写的很复杂。
从效率上来讲,它使用动态语句执行,动态待执行的语句并未得到编译(只是存储过程得到了编译),除了减少sql命令代码传递量,在效率上丝毫没有提高。
------解决方案--------------------
说了半天当我没说.