怕不是用sql server 2008R2的查询分析器打开高版本的sql server 数据库吧。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、江宁网站维护、网站推广。
你可以无视错误直接打SQL,只是部分功能如sql server 代理不能使用而已。
想解决就装一下更高版本的查询分析器吧。
举例说明:
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;
// 执行存储过程,并获取结果
}
仔细研究后在csdn上找到了解决该问题的办法帖出来给大家共享一下
大致方法是利用传递长字符串的形式向存储过程传递一个长字符串。由于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