仔細研究后在csdn上找到了解決該問題的辦法帖出來給大家共享一下

創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為渾江企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),渾江網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
大致方法是利用傳遞長字符串的形式向存儲過程傳遞一個長字符串。由于sqlserver沒有 splite函數(shù)
所以必須自己定義一個splite函數(shù)來進行處理
自定義一個函數(shù)
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-執(zhí)行select * from dbo.f_splitstr('1,2,3,4',',')
注:'1,2,3,4'即你所傳遞的字符串
同樣你可以通過 select cunt(*) from dbo.f_splitstr('1,2,3,4',',')
獲得該字符串數(shù)組的長度
如果要刪除該函數(shù)使用--刪除函數(shù)drop function fsplit
舉例說明:
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;
// 執(zhí)行存儲過程,并獲取結(jié)果
}
怕不是用sql server 2008R2的查詢分析器打開高版本的sql server 數(shù)據(jù)庫吧。
你可以無視錯誤直接打SQL,只是部分功能如sql server 代理不能使用而已。
想解決就裝一下更高版本的查詢分析器吧。
存儲過程里定義不了數(shù)組。如果是sqlserver,那么你可以用表變量,游標來實現(xiàn)你的功能。
如果是sqlserver2005以上的版本,可以做clr存儲過程,那里面是可以用數(shù)組的。
T-SQL里沒有數(shù)組這個概念。不知道你想干什么,很多地方,可以用臨時表,或者表變量來實現(xiàn)。
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數(shù)組,sql 數(shù)組變量
標題來源:http://chinadenli.net/article18/dsejjgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、Google、網(wǎng)站營銷、品牌網(wǎng)站建設(shè)、商城網(wǎng)站、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)