테이블 형식을 전달하는 작업에서 도움이 될만한 간단한 이상한 문제가 발생했습니다. 내 테이블 유형은 다음과 같습니다SQL Server 2008의 테이블 형식에 대한 문제
CREATE TYPE [dbo].[StoreTableType] AS TABLE(
[StoreGUID] [uniqueidentifier] NULL
)
나는 내가 그에게이 전달 proc 디렉토리에 저장되어 시장에 의해 약간의 합계를 표시하는 쿼리 그룹이 포함되어있다. 하지만 여기서 흥미로운 부분이 있습니다 ... SQLEM에서 쿼리를 실행하면 작동하지만 저장된 proc를 호출하면 아무 것도 반환하지 않습니다. 여기에 내가 결과를 얻기 위해 실행 내용은 다음과 같습니다
declare @p3 dbo.StoreTableType
insert into @p3 values('121A267F-F994-4B01-8318-9E307AF9415B')
insert into @p3 values('B2BB61CE-5ED8-4C91-ADB7-DA903B6D506A')
insert into @p3 values('5818BA65-A1B5-432E-BF76-68EF51635A39')
select * from survey where storeguid in (select StoreGUID from @p3)
select m.[Name] as Market, count(svy.SurveyGUID) as Total
from survey svy inner join store s on svy.StoreGUID = s.StoreGUID
inner join Market m on s.MarketID = m.MarketID
where s.StoreGUID in (select StoreGUID from @p3)
group by m.[Name]
이 저를 줄 것이다 : 나는 내 코드에서 문을 실행하면
이제, SQL 프로파일 러가 나를 보여주고는 다음을 생성하는 :이 프로그램을 실행할 때
declare @p3 dbo.StoreTableType
insert into @p3 values('121A267F-F994-4B01-8318-9E307AF9415B')
insert into @p3 values('B2BB61CE-5ED8-4C91-ADB7-DA903B6D506A')
insert into @p3 values('5818BA65-A1B5-432E-BF76-68EF51635A39')
exec sp_executesql N'snus_MarketTotals',N'@StoreGUIDs [StoreTableType] READONLY',@[email protected]
그러나, 내가 얻을 :
proc의 쿼리 별 그룹은 SQLEM에서 테스트 한 그룹과 동일합니다. 누구든지 아이디어가 있습니까? 나는 테이블 타입에 보석금을 쓸 준비가되었다. .. 그러나 내가 단지 무엇인가 멀리 바라보고 있는지 알고 싶었다.
업데이트 : 다음은 전화를 거는 코드입니다.
// EF <hates> table type parameters... so... gonna put some SQL in here.
SqlConnection conn = new SqlConnection(connectionString);
DataSet ds = new DataSet(datasetName);
using (SqlCommand cmd = new SqlCommand(spName, conn))
{
SqlParameter param = new SqlParameter("@StoreGUIDs", SqlDbType.Structured);
param.Value = storeGuids;
param.TypeName = "StoreTableType";
cmd.Parameters.Add(param);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
}
// get some xml
return(ds.GetXml());
그리고 시저에 대한
:CREATE PROCEDURE [dbo].[MarketTotals]
(
@StoreGUIDs StoreTableType readonly
)
AS
begin
-- market totals
select m.[Name] as Market, count(svy.SurveyGUID) as Total
from survey svy inner join store s on svy.StoreGUID = s.StoreGUID
inner join Market m on s.MarketID = m.MarketID
where s.StoreGUID in (select StoreGUID from @StoreGUIDs)
group by m.[Name]
SP 코드를 게시 할 수 있습니까? –
저장 프로 시저를 호출하는 코드를 잘 보여주십시오 ... – MethodMan
응용 프로그램 코드도 표시 할 수 있습니까? 명령 유형을 StoredProcedure로 정의 했습니까? sp_executesql은 당신이하지 않았다고 믿게합니다. –