.NET CLR 存储过程问题,请指导。
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub S_工作管理_任务数量(ByVal str_输入参数 As String)
Dim cn As New SqlConnection("context connection=true")
Dim cmd As New SqlCommand()
cmd = cn.CreateCommand
cmd.CommandText = "declare @机构码 int " &
"declare @机构名 nvarchar(10) " &
";with t as ( " &
"select 机构名称,机构代码,级数,上级代码 from 系统数据_机构信息 where 机构代码=" & str_输入参数分解(1) &
" union all " &
"select a.机构名称,a.机构代码,a.级数,a.上级代码 from 系统数据_机构信息 a " &
"join t on t.上级代码=a.机构代码 ) " &
"select distinct @机构码=机构代码,@机构名=机构名称 from t where 级数=2 "
cn.Open()
SqlContext.Pipe.ExecuteAndSend(cmd)
cn.Close()
End Sub
以上是我的一个存储过程的代码,就是提供一个输入参数,返回这个参数相应的上级部门。
现在的问题就是,如果上面的代码我做成一个clr的存储过程,那我如何在另一个clr存储过程中调用他,
并返回相应的[机构代码]、[机构名称]两个值?
------解决方案--------------------
;with t as (
select 机构名称,机构代码,级数,上级代码 from 系统数据_机构信息 where 机构代码=2
union all
select a.机构名称,a.机构代码,a.级数,a.上级代码 from 系统数据_机构信息 a
join t on t.机构代码 =a.上级代码)
---- select 机构代码 from t
select * from 系统数据_机构信息 where 机构代码 in
(select 机构代码 from t)
直接放到子查询里不就可以啦