Questions tagged «stored-procedures»

子例程可用于访问关系数据库系统的应用程序。

6
在C#中使用参数调用存储过程
我可以在程序中执行删除,插入和更新操作,并尝试通过从数据库中调用创建的存储过程来进行插入操作。 这个按钮插入我做得很好。 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } 这是按钮的开始,该按钮将调用名为sp_Add_contact添加联系人的过程。的两个参数sp_Add_contact(@FirstName,@LastName)。我在Google上搜索了一个很好的例子,但没有发现任何有趣的事情。 private void button1_Click(object sender, …

10
存储过程和视图之间有什么区别?
我对以下几点感到困惑: 存储过程和视图之间有什么区别? 在SQL Server中,什么时候应该使用存储过程,什么时候应该使用视图? 视图是否允许在可以传递参数的地方创建动态查询? 哪一个最快,在什么基础上比另一个快? 视图或存储过程是否永久分配内存? 如果有人说视图创建虚拟表,而过程创建物料表,那又意味着什么呢? 如果有任何其他问题,请让我知道。

2
语句完成前已用尽最大递归100
我不断得到max recursion error这个查询。 起初我以为是因为返回了null,然后它会尝试与null值匹配,从而导致错误,但是,我重写了查询,因此不返回null并仍然发生错误。 什么是重写此功能的最佳方法,这样就不会发生错误 WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR Id, …

6
MySQL-如何从存储过程中退出/退出
我有一个非常简单的问题,但是我没有使用Mysql从SP退出任何简单的代码。谁能和我分享该怎么做? CREATE PROCEDURE SP_Reporting(IN tablename VARCHAR(20)) BEGIN IF tablename IS NULL THEN #Exit this stored procedure here END IF; #proceed the code END;


5
使用PL / pgSQL将查询结果存储在变量中
如何将查询结果分配给PL / pgSQL(PostgreSQL的过程语言)中的变量? 我有一个功能: CREATE OR REPLACE FUNCTION test(x numeric) RETURNS character varying AS $BODY$ DECLARE name character varying(255); begin name ='SELECT name FROM test_table where id='||x; if(name='test')then --do somthing else --do the else part end if; end; return -- return my process result here $BODY$ LANGUAGE plpgsql VOLATILE 在上面的函数中,我需要存储此查询的结果: …


15
SQL存储过程中的动态排序
我过去花了数小时研究这个问题。在我看来,现代RDBMS解决方案应该解决此问题,但是到目前为止,我还没有发现任何能够真正解决我认为在任何具有数据库后端的Web或Windows应用程序中非常普遍的需求的东西。 我说的是动态排序。在我的幻想世界中,它应该像下面这样简单: ORDER BY @sortCol1, @sortCol2 这是新手SQL和存储过程开发人员在整个Internet论坛上给出的规范示例。“为什么这不可能?” 他们问。最终,总是有人总会向他们讲授存储过程的编译性质,一般的执行计划以及无法将参数直接放入ORDER BY子句的各种其他原因。 我知道你们中有些人已经在想:“那么,让客户来进行分类。” 自然,这会减轻数据库的工作量。在我们的案例中,我们的数据库服务器甚至在99%的时间内都不会汗水,甚至还不是多核的,也不是每6个月进行一次其他的系统架构改进。仅出于这个原因,让我们的数据库处理排序将不是问题。此外,数据库非常擅长分类。他们为此进行了优化,并且已经花了好几年的时间来实现它,其实现语言令人难以置信的灵活,直观和简单,最重要的是,任何初学者SQL编写者都知道如何做,更重要的是,他们知道如何进行编辑,进行更改,进行维护等。当您的数据库需要负担很多费用而您只想简化(并缩短!)开发时间时,这似乎是一个显而易见的选择。 然后是网络问题。我一直在使用JavaScript进行HTML表格的客户端排序,但是它们不可避免地不够灵活,无法满足我的需求,而且,由于我的数据库没有负担过多,并且可以非常轻松地进行排序,因此我很难证明重新编写或自己拥有JavaScript分选器所需的时间。服务器端排序通常也是如此,尽管它可能已经比JavaScript更受青睐。我不是特别喜欢DataSet开销的人,所以起诉我。 但这又回到了不可能的点,或者说不容易。对于以前的系统,我已经完成了一种获得动态排序的骇人听闻的破解方法。它不是很漂亮,也不是直观,简单或灵活的,初学者SQL编写器将在几秒钟内丢失。看起来这已经不是“解决方案”,而是“复杂性”。 以下示例无意提供任何种类的最佳实践或良好的编码风格,也不表示我作为T-SQL程序员的能力。它们就是它们的样子,我完全承认它们是令人困惑的,糟糕的形式,而且仅仅是简单的破解。 我们将一个整数值作为参数传递给存储过程(我们称该参数为“ sort”),然后从中确定一堆其他变量。例如...假设sort为1(或默认值): DECLARE @sortCol1 AS varchar(20) DECLARE @sortCol2 AS varchar(20) DECLARE @dir1 AS varchar(20) DECLARE @dir2 AS varchar(20) DECLARE @col1 AS varchar(20) DECLARE @col2 AS varchar(20) SET @col1 = 'storagedatetime'; SET @col2 = 'vehicleid'; IF @sort …


16
您如何调试MySQL存储过程?
我当前用于调试存储过程的过程非常简单。我创建一个名为“ debug”的表,在该表中,它会在存储过程运行时插入变量值。这使我可以在脚本中的给定位置查看任何变量的值,但是是否有更好的方法来调试MySQL存储过程?

17
您对存储过程的命名约定是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我已经看到了各种命名存储过程的规则。 某些人在存储过程名称前加上usp_前缀,另一些人在应用程序名称的缩写前加上前缀,而另一些人则在所有者名称前加上前缀。除非您确实如此,否则不应在SQL Server中使用sp_。 有些人以动词开头proc名称(获取,添加,保存,删除)。其他人则强调实体名称。 在具有数百个存储过程的数据库上,当您认为已经存在一个存储过程时,很难滚动查找合适的存储过程。命名约定可以使存储程序的查找更加容易。 您是否使用命名约定?请描述一下,并说明为什么您偏爱其他选择。 答复摘要: 似乎每个人都提倡命名的一致性,对于每个人来说,使用相同的命名约定可能比使用特定的命名约定更为重要。 前缀:虽然很多人使用usp_或类似名称(但很少使用sp_),但其他许多人则使用数据库或应用程序名称。一个聪明的DBA使用gen,rpt和tsk来区分一般的CRUD程序和用于报告或任务的程序。 动词+名词似乎比名词+动词更受欢迎。有些人为动词使用SQL关键字(“选择”,“插入”,“更新”,“删除”),而其他人则使用诸如Get和Add之类的非SQL动词(或它们的缩写)。有些人在单数名词和复数名词之间进行区分,以指示是否正在检索一个或多个记录。 最后在适当的地方建议添加一个短语。GetCustomerById,GetCustomerBySaleDate。 有些人在名称段之间使用下划线,而有些人则避免使用下划线。app_ Get_Customer与appGetCustomer-我想这是可读性的问题。 可以将大量的sproc隔离到Oracle软件包或Management Studio(SQL Server)解决方案和项目或SQL Server架构中。 应避免使用难以理解的缩写。 为什么选择我做的答案:有很多好的答案。谢谢你们!如您所见,很难只选择一个。我选择的那个引起了我的共鸣。我遵循了他描述的相同路径-尝试使用动词+名词,然后无法找到所有适用于客户的存储过程。 能够找到一个现有的存储过程,或者确定一个存储过程是否存在,这一点非常重要。如果有人无意间创建了另一个名字的重复存储过程,可能会导致严重的问题。 由于我通常在具有数百个存储库的大型应用程序上工作,因此我偏爱最容易找到的命名方法。对于较小的应用程序,我可能会提倡动词+名词,因为它遵循方法名称的通用编码约定。 他还主张使用应用程序名称作为前缀,而不是使用不太有用的usp_。正如一些人指出的那样,有时数据库包含多个应用程序的存储库。因此,使用应用程序名称作为前缀有助于隔离存储过程,并有助于DBA和其他人确定该存储过程用于哪个应用程序。

15
如何在SQL Server数据库中搜索字符串?
我知道有可能,但我不知道如何。 我需要在SQL Server数据库中搜索所有提及的特定字符串。 例如:我想在所有表,视图,函数,存储过程...中搜索字符串“ tblEmployes”(而不是表中的数据)。 我需要这样做的原因之一是,我想删除一些额外的数据表,但是我担心它们可能会在过程或函数中的某些地方使用。

5
Entity Framework Code First是否支持存储过程?
我已经看过EF Code First的一些演示,还没有看到EFCF如何与存储过程一起工作。 如何声明将使用某些sp的方法?是否可以将实体传递给调用sp的方法,而无需手动将实体属性映射到sp参数? 另外,如果我更改模型会怎样?从模型重新创建表格时,它会掉落我的sp吗?那触发器呢? 如果不支持这些功能,将来是否有计划支持它们?


8
C#SQL Server-将列表传递到存储过程
我正在从我的C#代码中调用SQL Server存储过程: using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = SqlDbType.Int; // Execute the query …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.