这是我一个程序里要用到的,用户批量删除自己的简历,因为防止他删除其他人的信息,所以加了uid=@uid这个条件。
存储过程:delete from table1 where id in ('+@chooseid+') and uid=@uid
执行的时候,如果选择了一条信息,执行能成功,但是如果是两条以上,就会出现“无法转换为int”的错误。
我知道有另外一个方法是用:exec 来执行动态构建的操作命令。但是那样的话@uid这个变量就不能防止注入攻击了。
@chooseid这个变量我在程序里已经判断了只允许使用数字和逗号。
请问有什么好的办法吗?
@uid是字符型的。是用户的用户名
有一个用户表,和一个简历表,用户表里保存了多个登录用户的信息;简历表里有每个用户的简历,是一对多的关系,两个表是通过用户名关联的,用户登录以后可以管理 自己的简历,批量删除的时候我想用存储过程来做,所以就写了这个存储过程。
create.... deleteUserJianli
@chooseid varchar(50),--这是用户选择的要被删除的简历id
@uid varchar(50)--这是用户的用户名
as
delete from jianli where id in ('+@chooseid+') and uid=@uid
go
关于sqlserver中存储过程里面in关键字的使用
首先就是@chooseid的问题 如果你这样in的话 即使你的 @chooseid=1,2,3 他也会把这几个看做一个整体 也就是把 id 同 '1,2,3'这个整体去比对 而不是拆开 这样的话只能用动态去构建 declare @sql varchar(1000)set @sql=''select @sql='delete from table1 where id in ('+ @chooseid...
SQL 中存储过程怎么使用?
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;2、下面的存储过程接受三个参数 , 分别用于获取...
sql server 中 一个要输入参数和输出参数的存储过程。
1、首先我们需要打开SQL Server Managment管理工具,新建一个表。2、然后在表中插入一些样例数据,如下图所示。3、接下来我们在SQL Server Managment中右键单击可编程性,选择新建存储过程。4、然后在SQL编写界面中编写如下图所示的SQL语句。5、编写好存储过程,我们执行一下,就会在可编程性下面找到我们创...
sql server存储过程中的“N”是什么意思?
N '字符串 \\x0d\\x0a意思是, 后面的内容, 数据类型为 NChar 或者是 NVarchar.\\x0d\\x0a\\x0d\\x0a使用 N 前缀\\x0d\\x0a\\x0d\\x0a在服务器上执行的代码中(例如在存储过程和触发器中)显示的 Unicode 字符串常量必须以大写字母 N 为前缀。即使所引用的列已定义为 \\x0...
SQL Server中 用存储过程 怎样 在同一时间向一张表插入多条数据_百度...
如果必须同时插的话,建议你使用一个临时表。 在存储过程中先将数据整理的临时表中。假设临时表名叫temp,目标表名叫 result。最后执行 insert into result select * from temp;就可以讲 temp表中的数据 一次入到 目标表中了。
sql server存储过程产生连续不重复编号
首先你需要建立一张表,用来存储你的新产生不重复ID的编号!就随便打个比方嘛:CREATE TABLE [dbo].[_sysIDType]([KeyID] [int] IDENTITY(1,1) NOT NULL, ---这个是ID表编号 [codeflag] [nvarchar](5) COLLATE Chinese_PRC_CI_AS NULL, ---这个是ID开头字母 [codelength] [int] NULL...
SQL SERVER 中存储过程、游标、嵌套循环、CASE、中间表使用实例
在SQL SERVER中,存储过程`PRO_EducationInputStatus`用于处理教育输入状态,它涉及到游标、嵌套循环、CASE以及中间表的使用。首先,定义了四个变量来存储计划号、月、课程代码和班次。存储过程的核心部分是创建一个临时表#mytemp,用于存储课程通过与否的信息。通过游标`schnoCursor`,逐个获取`Trainsched_...
在sqlserver的存储过程中怎样使用if-else if
跟程序中使用差不多,if,else if,else,只不过在sqlserver中,{}使用begin和end代替,里面嵌套什么的,都跟程序中写的差不多,简单实例如下: declare @a intset @a=1if @a<0begin select '小于0'endelse if @a=0begin select '等于0'endelsebegin if @a>0 and @a<1 begi...
在SQL Server数据库中 存储过程是什么,希望给点例题
存储过程是一段存储在系统中可随时使用的可带参数的SQL执行语句或程序段。使用存储过程可以避免重复的填写SQL语句、可以快速的得到符合条件的某段SQL语句的执行结果。例子(MSSQL):比如想实现一个表a(aid int,atime datetime)输入aid的值得到对应的atime的值 创建:create proc proc_test \/\/创建过程 ai...
SqlServer2008有一表table,有一age字段,值为20,21 现在需用age做条件...
你自己都讲啦!可以使用IN age in (20,21) 或者(age(type) = int) between 20 and 21