存储过程仅返回引用字段

时间:2012-03-13 10:22:32

标签: linq-to-sql

具有1个输入和2个参考参数的存储过程。将存储过程分配给linq查询时,不执行查询。我该怎么做才能真正执行填充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调用并执行此过程?该程序已经用于许多其他过程,并且已经使用了很长时间。

1 个答案:

答案 0 :(得分:0)

您使用输出参数作为'out'关键字仅用于PL-Sql(Oracle)....相反,您必须在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