您的位置:首页 > 数据库

在C#代码中构造字符串传入SQL代码中

2012-01-05 21:51 344 查看
最近遇到一个需求,就是在C#代码中构造字符串然后传入SQL代码中,在SQL中分离此字符串,将结果构造成临时表,作为另一个SQL语句的 in 子句。

解决方案:创建一个函数用于分离字符串;定义一个表变量,用于构造临时表。注意:不能使用declare #tableName 创建临时表,因为这样创建的表会

存在tmpdb系统数据库里面,访问量大的情况下就会造成数据库服务器变大。

C#代码中构造字符串,如:

string yo = "IT,ITMIS";

创建字符串分离函数

CREATE Function [dbo].[Split](@Sql varchar(8000))

returns @temp TABLE (code varchar(100))

As

Begin

DECLARE @Splits varchar(10)

SET @Splits=','

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

创建临时表变量

DECLARE @Sql VARCHAR(100)

SET @Sql=@yo

嵌入主查询语句

DECLARE @Sel INT

DECLARE @codeTable TABLE(tmpCode NVARCHAR(100))

INSERT INTO @codeTable(tmpCode) SELECT * FROM SPLIT(@Sql)

SELECT * FROM dbo.ExpensesReimbursementVoucher WHERE DepartmentCode

IN (SELECT * FROM @codeTable)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: