2012-03-13 62 views
0

具有帶1個輸入參數和2個參考參數的存儲過程。將存儲過程分配給linq-query時,不會執行查詢。我應該怎麼做才能真正執行填充2個參考參數的查詢。我在互聯網上找到的所有示例都使用「foreach」語句,但sp沒有返回結果列表。僅返回參考字段的存儲過程

存儲過程:

ALTER PROCEDURE [dbo].[usp_GetStraatenPlaatsnaam] 
-- Add the parameters for the stored procedure here 
-- <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
-- <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0> 
@POSTCODE nvarchar(6) 
,@STRAAT nvarchar(17) out 
,@PLAATS nvarchar(18) out 

AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

SELECT 
    @STRAAT = PCT_STRAATNAAM_TNT 
    ,@PLAATS = PCT_WOONPLAATS_TNT 
FROM 
    PCTR 
WHERE 
    PCT_POSTCODE = @POSTCODE 
END 

的過程是沒有餘量來改變一個給定的事實。我如何使用LinqToSQL調用和執行此過程?該程序已被用於其他一些過程,並已運行多年。

回答

0

您正在使用輸出參數作爲僅在PL-Sql(Oracle)中使用的'out'關鍵字....相反,您必須在T-Sql(Sql Server)中使用'OUTPUT'關鍵字作爲輸出參數。 ...

ALTER PROCEDURE [dbo].[usp_GetStraatenPlaatsnaam] 
-- Add the parameters for the stored procedure here 
-- <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
-- <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0> 
@POSTCODE nvarchar(6) 
,@STRAAT nvarchar(17) OUTPUT 
,@PLAATS nvarchar(18) OUTPUT 

AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

SELECT 
    @STRAAT = PCT_STRAATNAAM_TNT 
    ,@PLAATS = PCT_WOONPLAATS_TNT 
FROM 
PCTR 
    WHERE 
    PCT_POSTCODE = @POSTCODE 

END