开发者社区> 问答> 正文

从LINQ访问动态创建的存储过程

我将数据透视MS SQL存储过程中。使用存储过程参数(例如:“ location1,location2,location3,”)动态创建枢转的列,因此未知要生成的列数。输出应如下所示(位置取自存储过程参数):

订购时间| 位置1 | 位置2 | 位置3

有可能在LINQ to SQL中使用它吗?当我将此过程拖到dbml文件时,它表明该过程返回int类型。

我从log_sales表中使用的列是:

位置(我正在旋转的各种位置), 费用(金额) 订购时间 存储过程:

CREATE PROCEDURE [dbo].[proc_StatsDay] @columns NVARCHAR(64) AS

DECLARE @SQL_PVT1 NVARCHAR(512), @SQL_PVT2 NVARCHAR(512), @SQL_FULL NVARCHAR(4000);

SET @SQL_PVT1 = 'SELECT OrderTime, ' + LEFT(@columns,LEN(@columns)-1) +' FROM (SELECT ES.Location, CONVERT(varchar(10), ES.OrderTime, 120),ES.Charge FROM dbo.log_sales ES ) AS D (Location,OrderTime,Charge) PIVOT (SUM (D.Charge) FOR D.Location IN ('; SET @SQL_PVT2 = ') )AS PVT ORDER BY OrderTime DESC';

SET @SQL_FULL = @SQL_PVT1 + LEFT(@columns,LEN(@columns)-1) + @SQL_PVT2;

EXEC sp_executesql @SQL_FULL, N'@columns NVARCHAR(64)',@columns = @columns 在dbml designer.cs文件中,我的存储过程的一部分代码:

[Function(Name="dbo.proc_StatsDay")] public int proc_EasyDay([Parameter(DbType="NVarChar(64)")] string columns) { IExecuteResult result = this.ExecuteMethodCall(this,((MethodInfo)MethodInfo.GetCurrentMethod())), columns); return ((int)(result.ReturnValue)); }

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 16:24:54 517 0
1 条回答
写回答
取消 提交回答
  • 我将数据透视MS SQL存储过程中。使用存储过程参数(例如:“ location1,location2,location3,”)动态创建枢转的列,因此未知要生成的列数。输出应如下所示(位置取自存储过程参数):

    订购时间| 位置1 | 位置2 | 位置3

    有可能在LINQ to SQL中使用它吗?当我将此过程拖到dbml文件时,它表明该过程返回int类型。

    我从log_sales表中使用的列是:

    位置(我正在旋转的各种位置), 费用(金额) 订购时间 存储过程:

    CREATE PROCEDURE [dbo].[proc_StatsDay] @columns NVARCHAR(64) AS

    DECLARE @SQL_PVT1 NVARCHAR(512), @SQL_PVT2 NVARCHAR(512), @SQL_FULL NVARCHAR(4000);

    SET @SQL_PVT1 = 'SELECT OrderTime, ' + LEFT(@columns,LEN(@columns)-1) +' FROM (SELECT ES.Location, CONVERT(varchar(10), ES.OrderTime, 120),ES.Charge FROM dbo.log_sales ES ) AS D (Location,OrderTime,Charge) PIVOT (SUM (D.Charge) FOR D.Location IN ('; SET @SQL_PVT2 = ') )AS PVT ORDER BY OrderTime DESC';

    SET @SQL_FULL = @SQL_PVT1 + LEFT(@columns,LEN(@columns)-1) + @SQL_PVT2;

    EXEC sp_executesql @SQL_FULL, N'@columns NVARCHAR(64)',@columns = @columns 在dbml designer.cs文件中,我的存储过程的一部分代码:

    [Function(Name="dbo.proc_StatsDay")] public int proc_EasyDay([Parameter(DbType="NVarChar(64)")] string columns) { IExecuteResult result = this.ExecuteMethodCall(this,((MethodInfo)MethodInfo.GetCurrentMethod())), columns); return ((int)(result.ReturnValue)); }

    2019-11-18 16:25:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多