具有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调用并执行此过程?该程序已经用于许多其他过程,并且已经使用了很长时间。
答案 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