网站建设资讯

NEWS

网站建设资讯

sqlserver数组,sql 数组变量

如何向sql server存储过程传递一个数组

仔细研究后在csdn上找到了解决该问题的办法帖出来给大家共享一下

创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为浑江企业提供专业的成都做网站、网站建设,浑江网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

大致方法是利用传递长字符串的形式向存储过程传递一个长字符串。由于sqlserver没有 splite函数

所以必须自己定义一个splite函数来进行处理

自定义一个函数

create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(10))

returns @temp table(F1 varchar(100))asbegindeclare @i int

set @SourceSql=rtrim(ltrim(@SourceSql))

set @i=charindex(@StrSeprate,@SourceSql)while @i=1begininsert @temp values(left(@SourceSql,@i-1))

set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)

set @i=charindex(@StrSeprate,@SourceSql)endif @SourceSql''

insert @temp values(@SourceSql)returnend-执行select * from dbo.f_splitstr('1,2,3,4',',')

注:'1,2,3,4'即你所传递的字符串

同样你可以通过 select cunt(*) from dbo.f_splitstr('1,2,3,4',',')

获得该字符串数组的长度

如果要删除该函数使用--删除函数drop function fsplit

如何给SQLSERVER存储过程传递数组参数

举例说明:

CREATE PROCEDURE dbo.DoSomethingWithEmployees

@List AS dbo.EmployeeList READONLY

AS

BEGIN

SET NOCOUNT ON;

SELECT EmployeeID FROM @List;

END

GO

在C#中的写法:

DataTable tvp = new DataTable();

using (conn)

{

SqlCommand cmd = new SqlCommand("dbo.DoSomethingWithEmployees", conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter tvparam = cmd.Parameters.AddWithValue("@List", tvp);

tvparam.SqlDbType = SqlDbType.Structured;

// 执行存储过程,并获取结果

}

sqlserver索引超出了数组界限如何解决

怕不是用sql server 2008R2的查询分析器打开高版本的sql server 数据库吧。

你可以无视错误直接打SQL,只是部分功能如sql server 代理不能使用而已。

想解决就装一下更高版本的查询分析器吧。

【SQL】存储过程中如何定义数组?

存储过程里定义不了数组。如果是sqlserver,那么你可以用表变量,游标来实现你的功能。

如果是sqlserver2005以上的版本,可以做clr存储过程,那里面是可以用数组的。

sqlserver 2008 中怎么样创建数组的呀,请教一下

T-SQL里没有数组这个概念。不知道你想干什么,很多地方,可以用临时表,或者表变量来实现。

关于SQLserver 存储过程 如何切割一个字符串 转化为数组

Create Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10))

returns @temp Table (a varchar(100))

As

Begin

Declare @i Int

Set @Sql = RTrim(LTrim(@Sql))

Set @i = CharIndex(@Splits,@Sql)

While @i = 1

Begin

Insert @temp Values(Left(@Sql,@i-1))

Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)

Set @i = CharIndex(@Splits,@Sql)

End

If @Sql ''

Insert @temp Values (@Sql)

Return

End


当前名称:sqlserver数组,sql 数组变量
网站网址:http://njwzjz.com/article/dsejjgp.html