SQL 存储过程中怎么实现 参数中带的一条多个参数

存储过程代码
create proc [dbo].[sp_test]
(
@uids varchar(500)
)
as
print @uids
select * from IpToCitywhere id (@uids)
go
* 注 id 是int 类型

执行存储代码
exec sp_test '1,2,3,4,5,6'
错误异常:
消息 245,级别 16,状态 1,过程 sp_test,第 8 行 在将 varchar 值 '1,2,3,4,5' 转换成数据类型 int 时失败。

求高手指教,谢谢
我希望的是 传入进去的是 1,2,3,4,5 这样的格式
但是传入的结果是‘1,2,3,4,5 ’

方法:在执行select语句前先截取@uids
-- SELECT * FROM dbo.FunSplitStringToAraay( '28,353,2,35,88 ', ',')
CREATE FUNCTION dbo.FunSplitStringToAraay(@vchString varchar(1000),@vchSplit varchar(10))
RETURNS @tabArray table
(
string varchar(100)
)
AS
BEGIN
DECLARE @intStart int
DECLARE @intLocation int
DECLARE @vchSubstring varchar(100)
SELECT @intStart =1
SELECT @intLocation = CHARINDEX(@vchSplit,@vchString,@intStart)
WHILE (@intLocation <> 0 )
BEGIN
SELECT @vchSubstring=SUBSTRING(@vchString,@intStart,@intLocation-@intStart)
INSERT INTO @tabArray(string) SELECT @vchSubstring
SELECT @intStart = @intLocation +1
SELECT @intLocation = CHARINDEX(@vchSplit,@vchString,@intStart)
END
RETURN
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-08
只能在程序里将 SQL语句拼好 执行预处理
exec ('select * from IpToCitywhere id (@uids)')

SQL 存储过程中怎么实现 参数中带的一条多个参数
方法:在执行select语句前先截取@uids -- SELECT * FROM dbo.FunSplitStringToAraay( '28,353,2,35,88 ', ',')CREATE FUNCTION dbo.FunSplitStringToAraay(@vchString varchar(1000),@vchSplit varchar(10))RETURNS @tabArray table (string varchar(100))AS...

sql server 存储过程传参问题. 一个参数如何可以输入多个参数值
sql server 2005之后,可以使用xml数据类型传值,然后在存储过程中将xml解析成表,和temp_test表连接。sql server 2008之后,可以使用表变量,传给存储过程。

sql数据库中怎样调用带参数的存储过程
在sql server中 执行带参数的存储过程 exec+空格+存储过程名+空格+参数 多个参数的话用逗号分隔 传出参数要加output 例如:exec P_GetIntegratedFluxOneMoment @StartTableName,@ColName,@StartTime,@StartValue output 其中@StartTableName,@ColName,@StartTime,@StartValue都是前面已经定义好的变量 传...

SQL Server中 用存储过程 怎样 在同一时间向一张表插入多条数据
如果必须同时插的话,建议你使用一个临时表。 在存储过程中先将数据整理的临时表中。假设临时表名叫temp,目标表名叫 result。最后执行 insert into result select * from temp;就可以讲 temp表中的数据 一次入到 目标表中了。

SQL Server 如何执行 带参数的 存储过程
带参数的存储过程执行方法如下:(1)调用通用数据访问类:SqlHelper,执行SqlHelper.ExecuteNonQuery()方法 (2)使用示例:SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,sqlexec,myparm)(3)其中传递的4个参数如下:“conn”:为链接字符 “CommandType.StoredProcedure”:表示要执行的SQL存储过程...

在数据库的存储存储过程中,怎么调用返回多个参数
在存储过程的参数表中加入你要输出的参数.SQL SERVER中输出参数要在定义时加上output关键字。

sql存储过程输入参数需要传入多个值,怎么处理?
修改 UOM Varchar(50)=null为@UOM Varchar(Max)=null

在存储过程中如何用一条insert语句同时插入多条记录,而且生成的ID号要...
这和所用的数据库有关,不同的数据库对SQL标准支持有差异,同时存储过程等功能的实现和使用也不一样,就连INSERT的语法也有区别,需要结合具体的数据库来看,请详细说明所用数据库环境(包括版本号),或自己查阅相关手册(手册中应该有相应的说明。)对于ms sql server 2005,可以用 insert into test_...

如何在SQLserver中利用循环语句插入大量的数据
这个在sqlserver里面不好做,要用到sql语言中的变量并且sql语音没有for不过有while,不过一般数据都不会这样批量输入,毕竟不是每条数据都之间都存在内在的联系。如果你真的想用for语句进行录入的话,你就用visual studio连接你的数据库用c#代码来完成这个活。DECLARE @id INT,@username NVARCHAR(50),@...

如何给SQL SERVER存储过程传递数组参数
如下例create procedure mytest @MyParmTempTable varchar(30)asbegin-- @MyParmTempTable contains my parameter list...  这个变量是包含参数的表名-- For simplicity use dynamic sql to copy into a normal temp table...create table #MyInternalList (list_item varchar( 2 ) not null)set ...

相似回答