Tag: 存储过程

如何调用返回引用游标的Oracle存储过程

我试图调用返回引用游标的Oracle存储过程,我需要从返回的数据生成树视图。 我是新手,我有两个问题。 第一个问题是我无法调用该程序。 我收到此错误:“调用’OBJECT_HIERARCHY’时参数的数量或类型错误” 我的第二个问题是,我不明白当这个过程返回一个引用游标值时,我将如何获取该数据? 该表中有超过5000条记录,我没有得到那些数据,而是一个引用游标值。 有人可以解释我如何使用ref游标值获取该数据。 我没有使用Oracle的经验。 这是oracle中的过程定义: CREATE OR REPLACE PROCEDURE SAD.object_hierarchy (nAppId IN NUMBER, nParentId IN NUMBER DEFAULT -1, o_cRefCursor OUT SYS_REFCURSOR) IS BEGIN IF NOT o_cRefCursor%ISOPEN THEN OPEN o_cRefCursor FOR SELECT h.PARENT_ID, h.CHILD_ID, h.H_LEVEL, o.OBJECT_IDENTIFIER, o.OBJECT_TYPE_ID FROM ( SELECT PARENT_ID, CHILD_ID, LEVEL AS H_LEVEL FROM OBJECT_RELATIONSHIPS START WITH PARENT_ID = nParentId […]

对于entity framework中的所有情况,存储过程返回-1

CREATE PROC spIsValidUser @UserName varchar(50), @Password varchar(50) AS IF Exists(SELECT * FROM Users where UserName=@UserName and Password=@Password) BEGIN return 0 END ELSE BEGIN return 1 END GO 我已创建此Stored Procedure并使用entity framework调用此Stored Procedure 。 下面是用C#编写的代码。 MyBusEntities db = new MyBusEntities(); int empQuery = db.spIsValidUser(“abc”, “abc@123”); spIsValidUser Stored Procedure在所有情况下都返回-1 。 请告诉我错误。 编辑 – 根据给定的答案,存储过程不使用return语句,因为entity framework不能支持存储过程返回开箱即用的标量值。让我知道如何从Stored Procedure发送标量数据?

C#:将用户定义的类型传递给Oracle存储过程

参考Oracle:存储过程的可变参数数量 我有存储过程将多个用户插入到User表中。 该表定义如下: CREATE TABLE “USER” ( “Name” VARCHAR2(50), “Surname” VARCHAR2(50), “Dt_Birth” DATE, ) 插入多个用户的存储过程是: type userType is record ( name varchar2(100), … ); type userList is table of userType index by binary_integer; procedure array_insert (p_userList in userList) is begin forall i in p_userList.first..p_userList.last insert into users (username) values (p_userList(i) ); end array_insert; 如何从C#调用存储过程传递userType的userList? 谢谢

什么是更新存储过程368次以更新数据库的好方法?

我正在研究一个.NET组件,它从数据库中获取一组数据,对该组数据执行一些业务逻辑,然后通过类似于spUpdateOrderDetailDiscountedItem的存储过程更新数据库中的单个记录。 对于小数据集,这不是问题,但是当我有一个非常大的数据集需要迭代368个存储过程调用来更新数据库中的记录时,我意识到我遇到了问题。 一位高级开发人员查看了我的存储过程代码并说它看起来不错,但现在我想探索一种更好的方法来将“批量”数据发送到数据库。 我有哪些选项可以批量更新数据库? 这可能与存储过程有关吗? 我还有其他选择吗? 我不会选择安装完整的ORM,但任何建议都表示赞赏。 其他背景资料: 我们当前的数据访问模型是在5年前构建的,目前对db的所有调用都是通过模块化/静态函数执行的,其名称类似于ExecQuery和GetDataTable 。 我不确定我是否需要保持在该模型中,但是我必须提供一个非常好的理由来超越我们当前的DAL来获取数据库。 另外值得注意的是,在谈到CRUD操作和数据库时,我还是比较新的。 我更喜欢在.NET代码中玩/工作,但数据必须存储在某个地方,对吧? 存储过程内容: ALTER PROCEDURE [dbo].[spUpdateOrderDetailDiscountedItem] — Add the parameters for the stored procedure here @OrderDetailID decimal = 0, @Discount money = 0, @ExtPrice money = 0, @LineDiscountTypeID int = 0, @OrdersID decimal = 0, @QuantityDiscounted money = 0, @UpdateOrderHeader int = 0, @PromoCode […]

存储过程:传递XML作为参数和INSERT(键/值对)

您将如何构造XML并将其作为参数传递给MS SQL 2005服务器上的存储过程? 您将如何将XML插入表中? 数据采用键/值对的forms: [ 0: [key, value], 1: [key, value], 2: [key, value] ]

具有存储过程的代码优先entity framework返回复杂全文搜索的结果

我正在寻找以下场景的设计建议: 我有一个代码优先的EF5 MVC应用程序。 我正在构建一个全文搜索function,它将包含来自许多表的多个加权列。 由于我无法使用这些表中的索引创建视图(其中一些包含文本/二进制列),因此我创建了一个存储过程,该过程将输出我的对象的ID(例如PersonID )以及与该对象关联的排名。搜索条件。 我目前的方法是创建一个辅助类来执行全文搜索,调用存储过程并根据返回的ID加载来自上下文的所有对象。 我的问题是: 我的方法是否合理/遵循合理的最佳做法? 有没有其他人做过类似的经验教训? 有没有办法更有效地执行此操作(即将存储过程的结果直接返回/映射到实体而无需额外的查找?) UPDATE 将我的详细实现从问题编辑转移到自己的答案中,更符合经常推荐的内容@ meta.stackexchange.com

从SQL Server存储过程获取值输出到变量

这似乎是一个简单的问题,但我还没有找到答案。 我有以下存储过程 CREATE PROCEDURE [dbo].[AllocateId] AS BEGIN TRANSACTION UPDATE TOP(1) IdReservation SET IsAllocated = 1 OUTPUT DELETED.Id WHERE IsAllocated = 0 COMMIT TRANSACTION GO 它已经在C#+ EF代码中使用,没有问题通过ObjectContext的ExecuteFunction ObjectResult objectResult = ExecuteFunction(“AllocateId”); 但是,当我尝试直接从SQL脚本调用它时,它似乎不起作用 declare @Id int EXEC @Id = [dbo].[AllocateId] @Id始终为0.如何在sql脚本中将值输入@Id变量?

如何使用EF执行带输入和输出参数的存储过程?

我使用EF代码第一种方法,我使用迁移创建了存储过程,如下所示: public override void Up() { Sql(@”CREATE TYPE IdsList AS TABLE ( Id Int ) GO Create Procedure getChildIds( @IdsList dbo.IdsList ReadOnly ) As Begin WITH RecursiveCTE AS ( SELECT Id FROM dbo.PhysicalObjects WHERE ParentId in (Select * from @IdsList) –Where Id=108 UNION ALL SELECT t.Id FROM dbo.PhysicalObjects t INNER JOIN RecursiveCTE cte ON t.ParentId […]

将文本框文本转换为整数

我需要将我的xaml代码的文本框中的文本转换为C#中的整数值。 我正在使用.NET 4.0和Visual Studio 2010.有没有办法在xaml标签本身或者我需要在C sharp中编写转换器。 我尝试了以下但是没有工作: Convert.ToInt32(this.txtboxname.Text) 任何帮助深表感谢。 谢谢。

如何从存储过程返回XML?

我创建了一个返回XML的存储过程,我想在我创建的方法中返回该XML。 我有两个问题。 首先,在进行一些搜索之后,不建议使用.ExecuteScalar(); 因为它会截断超过2033个字符的字符串。 所以,我发现了一个名为ExecuteXMlReader()的函数,但是在.NET 4.0(C#)上运行的Visual Web Developer 2010 Express中,它抛出错误”System.Data.SqlClient.SqlCommand’ does not contain a definition for ‘ExecuteXMlReader’ and no extension method ‘ExecuteXMlReader’ accepting a first argument of type ‘System.Data.SqlClient.SqlCommand’ could be found” 这是我的存储过程: CREATE PROCEDURE dbo.GETReport (@ReportDate date) AS SELECT * FROM ReportTbl WHERE ReportDate = @ReportDate for xml auto, elements set nocount on; RETURN […]