Tag: 存储过程

我怎样才能从存储过程中返回所有记录?

我正在使用此存储过程 ALTER PROCEDURE [dbo].[MyProcedure] @pSelect nvarchar(max) AS BEGIN SET NOCOUNT ON; DECLARE @SQL nvarchar(max) SET @SQL = ‘select ‘ + @pSelect + ‘ from vwAcdAdmissionWithvwAcdAdmissionSessionDetailWithAllMaster’; EXEC (@SQL) END 并使用linq从c#.net entitydatamodel执行它 shoolSoulDataEntites db = new schoolSoulDataEntites; var ss = db.Myprocedure(“column1,column2”); 但它返回一个整数值我希望程序结果的所有记录plss帮助我

MongoDB中存储的javaScript的C#调用不是比使用MongoDB C#驱动程序查询API更高效,更好吗?

所有: 以下是有关我的开发环境的信息: MongoDB 3.0.0 MongoDB C#驱动程序版本1.7.0.4714 Microsoft Visual Studio Professional 2013 .NET Framework 4.0 使用MongoDB C#驱动程序版本1.7.0.4714 API,我可以使用IMongoQuery和Query对象构建查询, 但是,当查询涉及MongoDB集合之间的大量“准连接”时,我发现很难使用MongoDB C#驱动程序版本1.7.0.4714 API实现查询。 此外,如果您将MongoDB世界中的大量数据作为POCO对象列入C#world,我相信它会降低性能。 所以,我在考虑采用使用C#调用MongoDB中存储的JavaScript的实现方法是否合适。 var sysJs = DBConnection.database.GetCollection(“system.js”); sysJs.Remove(Query.EQ(“_id”, “getUsers”)); var code = File.ReadAllText(HttpContext.Current.Server.MapPath(“~/Hos/quasiStoredProcedures JS/getUsers.js”)); var codeDocument = new BsonDocument(“value”, new BsonJavaScript(code)); codeDocument.Add(new BsonElement(“_id”, “getUsers”)); sysJs.Insert(codeDocument); BsonValue getUsers = DBConnection.database.Eval(“getUsers”); BsonValue bv3 = DBConnection.database.Eval(getUsers.AsBsonJavaScript.Code, null , loggedInUser.CompanyID […]

使用Entity Framework使用动态参数执行SQL Server存储过程

我们想使用EF执行存储过程。 我们的方法是动态提供输入参数,如下所示: PropertyInfo[] props = search.GetProperties(); foreach (var item in props) { object itemValue = item.GetValue(SearchCondition, null); if (itemValue == null) parameterList.Add(new SqlParameter(string.Format(“@{0}”, item.Name), DBNull.Value)); else parameterList.Add(new SqlParameter(string.Format(“@{0}”, item.Name), itemValue.ToString())); } 这是其他常见的输入: parameterList.Add(new SqlParameter(“@order”, (object)”desc”)); parameterList.Add(new SqlParameter(“@Page”, page)); parameterList.Add(new SqlParameter(“@PageSize”, rows)); 还有输出参数: parameterList.Add(new SqlParameter() { DbType = DbType.Int32, ParameterName = “@TotalCount out”, SqlValue = DBNull.Value, […]

使用Entity Framework,我应该在我的存储过程中使用RETURN还是SELECT?

我目前正在尝试使用Entity Framework的存储过程,我遇到了返回类型的问题。 我的存储过程的返回类型是BIT。 这是我的存储过程的代码(简化): CREATE PROCEDURE [dbo].[sp_makeStuff] @id int AS BEGIN DECLARE @status BIT BEGIN TRY BEGIN TRANSACTION DELETE FROM MyTable WHERE Id = @id SET @status = 1 COMMIT END TRY BEGIN CATCH SET @status = 0 ROLLBACK END CATCH RETURN @status END END 我在我的.edmx文件中添加了sp_makeStuff,返回类型为bool?。 然后,我尝试使用下面的代码执行它 using (var ctx = new MyEntities()) { ObjectResult […]

使用ExecuteSqlCommand调用存储过程(期望未提供的参数)

我正在尝试使用context.Database.ExecuteSqlCommand从EF调用存储过程,因为我的一个参数是一个数据表。 以下是程序的参数: ALTER PROCEDURE [mySchema].[myProc] @customerId INT, @indicatorTypeId INT, @indicators [mySchema].[IndicatorList] READONLY, @startDate DATETIME, @endDate DATETIME 这是调用存储过程的c#代码: var indicatorsDt = new DataTable(); indicatorsDt.Columns.Add(“Date”, typeof(DateTime)); indicatorsDt.Columns.Add(“Ongoing”, typeof(int)); indicatorsDt.Columns.Add(“Success”, typeof(int)); indicatorsDt.Columns.Add(“Warning”, typeof(int)); indicatorsDt.Columns.Add(“Error”, typeof(int)); indicatorsDt.Columns.Add(“Other”, typeof(int)); var customerIdParam = new SqlParameter(“customerId”, SqlDbType.Int); customerIdParam.Value = customerId; var typeIdParam = new SqlParameter(“indicatorTypeId”, SqlDbType.Int); typeIdParam.Value = typeId; var startDateParam = […]

如何在C#中获取存储过程返回值?

我有一个存储过程执行某些操作并返回1或0,如下所示 CREATE PROCEDURE dbo.UserCheckUsername11 ( @Username nvarchar(50) ) AS BEGIN SET NOCOUNT ON; IF Exists(SELECT UserID FROM User WHERE username =@Username) return 1 ELSE return 0 END 在C#我希望得到这个返回值我尝试ExcuteScalar但它没有返回任何值(我知道如果我用Select 0替换return 0 Select 0 ExcuteScalar会捕获它..但它是否允许我获得返回值的任何方式用select替换return ? 注意:我也不想用户存储过程输出参数

从收到的数据存储过程中填充自定义C#对象

public class User { public string FirstName { get; set; } public string LastName { get; set; } } public class Address { public string City { get; set; } public string Country { get; set; } } /* * There are 2 c# objects i have shown * There is a stored procedure in […]

SQL筛选器查询

我有一个包含许多字段的表。 我正在尝试在asp.net中创建搜索filter,以便用户可以通过一个或多个字段组合进行搜索。 所以基本上我想创建一个接受4个参数的单个存储过程,如果它不为空,它会将参数附加到WHERE子句…… TableExample有4列,Col1 Col2 Col3 Col4 我希望有一种方法可以使用单个存储过程来完成此操作,而不必为每个可能的组合创建一个。 我正在尝试这样的事情,这是不正确的,但它是迄今为止我所得到的。 谢谢! CREATE PROCEDURE [dbo].[Search] @Col1 int, @Col2 int, @Col3 int, @Col4 int AS SET TRANSACTION ISOLATION LEVEL READ COMMITTED SELECT * FROM [dbo].[TestTable] WHERE 1=1 CASE WHEN @Col1 IN NOT NULL THEN AND [Col1] = @Col1 WHEN @Col2 IN NOT NULL THEN AND [Col2] = @Col2 […]

如何在C#中创建存储过程,然后*将*保存到SQL Server?

我一直在这个墙上撞了一会儿。 我知道你可以用C#代码创建一个存储过程,那个位就行。 但我无法弄清楚的是,然后我可以将该存储过程保存 到SQL Server上 – 但是通过C#代码完成了吗? 场景是:我想通过代码创建测试数据库,然后我想将存储过程添加到新创建的测试数据库(服务器端) – 再次,所有这些都是通过相同的C#代码项目完成的。

Oracle SQL:选择具有多列之间最新日期的单行

我的基表结构如下所示: 创建表EXAMPLE_TABLE { ID NUMBER NOT NULL, – 这里的其他栏目, CREATE_USER VARCHAR2(255 BYTE)NOT NULL, CREATE_DATE DATE DEFAULT SYSDATE NOT NULL, UPDATE_USER VARCHAR2(255 BYTE), UPDATE_DATE DATE } 我想要做的是选择具有最高update_date或create_date的行的id。 所以这样的事情(虽然这不起作用 – 在存储过程中将pID定义为out变量): SELECT ID,MAX(GREATEST(CREATE_DATE,UPDATE_DATE)为LAST_MODIFIED 来自EXAMPLE_TABLE 将ID转回pID; 这将返回一个基本上是表中修改的最后一行的id。 帮助不大? PS这是在Oracle11g中。 我目前正在使用MERGE将行插入表中,并使用此方法获取最后一个upserted行的id。 如果你对此有任何建设性的批评(可能有另一种解决方案),我会全力以赴。 我已经阅读了很多关于为什么这是好/坏的论点。 我将在c#中调用此过程,所以其他任何提示都值得赞赏。