为什么我在用C#调用过程时得到一个Oracle错误?
我在Oracle 11G中写了此过程: create or replace PROCEDURE P1 ( ID_1 IN NUMBER , P_NAME OUT VARCHAR2 ) AS BEGIN SELECT NAME_ into p_name FROM A1 WHERE ID=ID_1; END P1; 我在C#中编写了此代码以调用该过程: OracleConnection conn = new OracleConnection("User Id=webservice_access;Password=DAMAVAND;Server=ORA11;"); //OracleConnection conn = new OracleConnection("User Id=SYSTEM;Password=123456;Server=ORA11;"); OracleCommand cmd = new OracleCommand(); cmd
8 2024-04-26
编程技术问答社区
如何解决SQL Server存储过程中的并发性插入问题
我有一个存储过程,该过程将@id作为输入参数.表Student在Id_Column和Count_Column上具有主键.如果给定id的表中存在任何记录,则我从表中选择最大Count_Column,然后通过将最大值Count_Column插入新行,以零值的效率. 我正在WCF服务中的ADO.NET代码调用此存储过程,此服务是从ASP.NET Web应用程序调用的. 此存储的过程在正常情况下效果很好,但是当多个用户同时调用它时,主要的违规问题发生了,同样的情况我也通过使应用程序多线程进行了复制.我知道这个问题与并发有关,最初我在选择查询中使用了with(nolock),但是我现在删除了此问题. 在某个地方,我已经读到,通过设置交易隔离级别可以解决,但是当我尝试时,我会得到回滚事务异常. 请让我知道这个问题的任何有效解决方案. declare @iCount = 0; if exists(select 'x' from Student with(nolock)
12 2024-04-26
编程技术问答社区
LINQ TO SQL存储过程调用如何工作?
我有一个linq到SQL上下文,我创建了调用存储的proc.当我通过iSingleresult循环时,它是在底层数据标准读取结果或在函数调用返回之前将所有内容预先进入实体的过程中创建实体的. . 基本上发生的事情是我正在使用一个存储的Proc,该Proc有时可能会返回成千上万的记录,而大多数情况下它仅返回几千个记录. DatabaseDataContext context = new DatabaseDataContext(); var resultSet = context.MyStoredProc(); foreach (var result in resultSet) { // some code here } 我会一次加载每件事,或者一次将其循环时一次加载一个? ? 解决方案 当您列举结果时,存储过程将被调用,因此执行会推迟.但是,它并不是懒洋洋的负载.意思是,一旦列举了存储过程的结果,您将有效地执行整体存储过程,所有结果将被带回. 如果您
12 2024-04-26
编程技术问答社区
带有数组参数的存储过程 csharp到mssql
这是我在SQL中的手动查询工作: SELECT * FROM Accounts where Phone in ('05763671278','05763271578','04763125578') 如何从csharp获取这样的参数到存储过程? 我在C#中有一个电话阵列.我从视图中从参数获得此数组(多复选框选择).这是我的观点: 这是我的控制器动作: public ActionResult SendSMSOrMail(string[] values){ // this give "'05763671278','05763271578','04763125578'" string numbers = string.Join(",", values); // ... ut
6 2024-04-26
编程技术问答社区
如何在不重复存储过程代码的情况下提示更新锁
我有一个现有的存储过程sp1,它是从表中简单选择的.它在多个地方使用. 现在有一个新代码,它使用此SP1以及一个可序列化事务中的更新语句.我看到了僵局,其中两项交易能够在同一组行上获得锁定锁定,现在想将该锁转换为更新. 一种可能的解决方案是使该SP1在读取的隔离级别中执行. ,但我认为这不是正确的修复,可能会丢失更新.另一个解决方案是在SP1的Select语句中提示UPDLOCK.这将解决僵局,因为任何事务获得的任何交易只会继续进行.另一笔交易必须等待这一点. 现在,不必要地将UPDLOCK添加到此SP1中,将此开销添加到其他地方的sp1但不想要UPDLOCK的地方.因此,人们可能会考虑复制此SP1并具有与SP1相同但具有UPDLOCK的新SP1UPDLOCK.我不想要这个重复. 因此,有什么办法可以提示使用Updlock进行任何SP1返回. 其他任何更好的解决此类问题的方法. 我正在使用SQL Server 2008,C#,.NET 4. 示例代码
8 2024-04-26
编程技术问答社区
我怎样才能从一个存储过程中返回所有记录?
我正在使用此存储过程 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 =新的校友; var ss = db.myprocedure(" column1,column2"); 但是它正在返回整数值 我想要所有程序结果的记录 请帮助我 解决方案 但是它正在返回整数值 否,它没有返回整数值.
2 2024-04-26
编程技术问答社区
存储程序性能问题
我有一个具有报告生成功能的计费应用程序.跑步6-7个月后,我面临有线问题. I SQL语句在管理工作室编辑器中完美运行(4秒执行),但是当我对SP进行相同的查询时(1分钟9秒才能执行相同的查询).表有150k行.以下是我在sp中使用的查询.我的应用显示超时过期异常消息.我尝试将连接字符串中的超时设置为180秒. (用于温度解决方案),但没有阳性结果. ALTER PROCEDURE [dbo].[rpt_GetShiftEndReport]( @BillDate varchar(10), @JobShift int, @MonthStartDate varchar(10), @MonthEndDate varchar(10) ) AS --begin tran SET NOCOUNT ON; SELECT Products.pCode AS ProductCode, MIN(Products.pName) AS ProductName, MIN(Produ
0 2024-04-26
编程技术问答社区
存储过程在nHibernate中不工作
目标: 通过支持NHIBERNATE的存储过程,将数据检索到类中.您可以使用NHIBERNATE使用存储过程来检索数据. 问题: 我检索一条错误消息说: 类型的未经手的例外 'nhibernate.exceptions.genericadoexception'发生在nhibernate.dll 中 其他信息:无法执行查询 [exec sp_retrieveallproductCategory] ​​ [sql:exec sp_retrieveallproductCategory] ​​ 我不知道在这种情况下该怎么办. 信息: 我正在使用VS 2013和SQL Server 2012 test.hbm.xml
2 2024-04-26
编程技术问答社区
VB.NET TO C#-Gridview Code behind for a search from a listbox w a stored procedure
我正在寻找C#中语法背后的正确代码,以显示GridView中多个参数的搜索结果.我只是在vb.net上做了类似的事情,但我必须在c#.net中更新一个项目,并且不确定: 1)c#.net中的正确CodeBehind语法(vb.net中的代码) 2)在用户选择多个保险计划参数,多个年龄参数和/或M的情况下,如何指定多个搜索参数. 3)禁用或启用在列表框中选择多个参数的能力. (对于状态和邮政编码列表框,我想禁用选择多个参数,并在计划,年龄和载体上,我想启用选择多个参数. 这是我在vb.net中的后端中需要的,它需要在c#.net中: Protected Sub SearchButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SearchButton.Click With Me.SqlDataSource1 .SelectParameters
8 2024-04-26
编程技术问答社区
在存储过程中解释byte[]。
a Proc我们通过加密搜索字段并比较这些加密值来搜索一个加密字段.不过,我需要做的是传递PROC(通过实体框架4)加密值(作为代码加密的值),但如果未提供该值,也允许null. . 所以我需要传递一个字节[],但是它也需要接受零...这是可能的,还是解决方法是什么?同样,我正在通过实体框架调用存储过程. 谢谢. 解决方案 我们最终通过将其推动为字符串,然后在Proc中解析来使其工作.奏效了.但是我相信我读过一个代表字节[]数组的二进制对象,这也可以起作用. 其他解决方案 给定此存储过程: create procedure dbo.pConvertBytesToInt @bytes varbinary(4) as select convert(int,@bytes) go 以下代码将执行它,如果传递的参数为null: ,则通过null. static int? Bytes2IntViaSQL( byte[] @bytes ) {
2 2024-04-26
编程技术问答社区
如何在存储过程中向日期参数传递默认值-Sqlserver 2008?
这是我的存储过程: ALTER proc [dbo].[allrecp] @peid int=0, @pename varchar(20)='', @pdes varchar(20)='', @pdoj date='1111-1-1', @sal money=0, @dept int=0, @loc int=0,@i int=0 as begin if(@i=1) begin insert into Employee values(@pename,@pdes,@pdoj,@sal,@dept,@loc) end if(@i=2) begin update Employee set ENAME=@pename,DESEGNATION=@pdes,DOJ=@pdoj,SALARY=@sal,DEPTID=@dept,LOCATIONID=@loc WHERE EMPI
0 2024-04-26
编程技术问答社区
存储过程MERGE(INSERT OR UPDATE)和返回ID问题
因此,我正在尝试学习如何使用存储过程,并且在大多数情况下,我在某种程度上了解了如何使用它们. 我要做的是使用合并过程插入一行是否尚未存在并返回ID如果不存在的ID,则只需返回ID. 这是我到目前为止所拥有的. CREATE PROCEDURE dbo.authors_InsertOrUpdate -- Add the parameters for the stored procedure here @FirstName nvarchar(50), @LastName nvarchar(50), @id int = NULL OUTPUT AS MERGE Authors AS target USING (SELECT @FirstName, @LastName) AS source (FirstName, LastName) ON target.FirstName = source.FirstName AND target.LastName = source.Last
2 2024-04-26
编程技术问答社区
C#中的SQL输出参数
我正在尝试从Microsoft SQL Server stored procedure获得值.总的来说,我需要返回两个值.如下所示,其中一个可以通过返回访问,另一个可以通过输出参数访问.我在WPF(C#)中运行此代码: public int InsertCustomerEntranceLogWithOptions(String cardNumber,int buy, int score, out int logID) { SqlCommand command = new SqlCommand( @" --declare @id int, @logID int exec @res = Insert_CustomerEntranceLog_WithOptions @cardNumber, @buy, @sco
10 2024-04-26
编程技术问答社区
当从后面的代码调用时,存储过程中的Oracle插入查询不工作
下面是我的存储过程,在SQL编辑器调用时工作正常.但是,当从代码调用时,只有第一个语句(截断)起作用.插入物不起作用.谁能帮帮我吗.预先感谢. sp: create or replace PROCEDURE GETALARMLIST ( pEqCode ESPC_O_ALARM_DATA.EQCODE%TYPE, pOccMinTime ESPC_O_ALARM_DATA.OCCTIME%TYPE, pOccMaxTime ESPC_O_ALARM_DATA.OCCTIME%TYPE, displayparam OUT SYS_REFCURSOR ) AS BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE tempalarmlist'; INSERT INTO tempalarmlist(OCCDATE,FIRSTOCCTIME,COUNT) SELECT sub
10 2024-04-26
编程技术问答社区
向存储过程传递值和表列表的参数
我要实现一个C#应用程序,该应用程序需要消费已在参数中接收ID或值的现有存储过程. 我负责的任务是两个步骤: 1-迁移存储过程以接收ID列表(INT)和当前参数列表,意味着表 2-实现该过程的层,并将接收列表和keyvaluepair或keyvaluepair 最好的方法应该是什么? entityframework可以在alla中包裹sps吗? 如何实现列表和keyValuepair params ob s side?带有表值参数? 我在SQL 2012 谢谢, 解决方案 在SQL侧用户定义的表类型功能中尝试,并将表作为存储过程中的参数作为参数. 例如: CREATE TABLE Test ( Id int NOT NULL IDENTITY (1, 1), TestName varchar(50) NOT NULL, Value int NULL ) ON [PRIMARY] -- Create a table data typ
2 2024-04-26
编程技术问答社区
如何在特定时间通过C#运行SQL存储过程?
我现在正在建立一个图书馆的网站,如果有人需要在接下来的五天内返回​​书籍,并通过电子邮件向他们发送提醒. 我的问题是正确的方法是什么? 我需要完成的工作是,当一天中的特定时间到来时,我需要运行一个SQL存储的过程,并通过Visual Studio 2010或其他任何方式检查存储过程是否返回了我需要发送电子邮件的任何结果. 有没有办法可以在C#上不断检查系统时间,而不是作为触发事件? 解决方案 我会映像最简单的方法是在SQL Server代理中创建新作业以每天调用您的存储过程,而不是试图在您编写的应用程序中实现这一目标. 请参阅以下链接以获取有关编辑 - 对不起,我真的不应该在做其他工作时尝试回答帖子.我完全错过了您想发送电子邮件的事实,并将其转到我的脑海中,您想在屏幕上报告逾期记录. duh. 要每天在某个时间发送逾期电子邮件,我猜Windows服务肯定会完成这项工作,但似乎有点超过顶部,您需要完全控制它正在运行的服务器在. 您可以设置一个计划
12 2024-04-26
编程技术问答社区
在C#中把带参数的存储过程放入DataGridView中
我是C#的新手,我想将数据从SQL数据库中提取到Visual Studios中的C#应用​​程序. 我一直在使用各种指南来做到这一点,但找不到问题.如果我想在没有指定参数的情况下召回表,则该代码有效. 这是我当前的代码: string CS = "Server = server-sql1;Database=Accounts;Trusted_connection=true"; using (SqlConnection con = new SqlConnection(CS)) { SqlCommand cmd = new SqlCommand("ASP_SLINVOICE", con); //specify that it is a stored procedure and not a normal proc cmd.CommandType = System.Data.CommandType.StoredProcedure; //list t
0 2024-04-26
编程技术问答社区
通过存储过程向C#返回SQL Server输出参数
我在SQL Server 2012中具有OUTPUT参数的存储过程.当我调用C#解密函数时,在击中ExecuteNonQuery()时,我总是会出现错误: 过程或函数'dectryccode'期望参数'@decryptedstr',该参数未提供. 如何获得代码中存储过程的OUTPUT值?谢谢. 存储过程: ALTER PROCEDURE [dbo].[DecryptCCode] @decryptedStr nchar(5) OUTPUT AS BEGIN SET NOCOUNT ON; IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101) CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'rfsdffsssdfsdfwerefeses' IF NOT EXISTS (SELECT
4 2024-04-26
编程技术问答社区
如何使用SQL游标返回过滤的行
我一直在查看存储过程中光标的示例,它们似乎都在打印到控制台或在主循环中操纵数据. 我的情况如下: 创建一个存储过程,该过程从单个表返回过滤的行. 为简单SELECT语句创建一个光标,而无需WHERE子句. 在提取周期中迭代. 仅返回符合某些条件的行. pseudocode(c#,entityframeworkcore): var name = "xyz"; var email = ""; var users = new List(); foreach (var user in context.Users.AsQueryable()) { var added = false; if (!added) { if ((!string.IsNullOrWhitespace(name)) && (user.Name.Contains(name))) { users.Add(
2 2024-04-26
编程技术问答社区