Questions tagged «stored-procedures»

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


6
mysql存储过程是否可以具有默认参数?
我在Google上搜索并不断提出“不,这是不可能的”,但是这些帖子的发布日期为2005-2007,所以我想知道是否已更改。一个代码示例: CREATE PROCEDURE `blah` ( myDefaultParam int = 0 -- This breaks the code for some reason ) BEGIN -- Do something here END 解决方案之一是传递null,然后检查null并设置变量。我不想这样做,也不必这样做。如果这是真的,那么MySql开发人员需要唤醒,因为我可以使用MSSQL做更多的事情。

14
如何比较在T-SQL中可能都为空的值
我想确保我没有在表中插入重复的行(例如,仅主键不同)。我所有的字段都允许使用NULLS,因为我将null表示为“所有值”。由于为空,因此我的存储过程中的以下语句不起作用: IF EXISTS(SELECT * FROM MY_TABLE WHERE MY_FIELD1 = @IN_MY_FIELD1 AND MY_FIELD2 = @IN_MY_FIELD2 AND MY_FIELD3 = @IN_MY_FIELD3 AND MY_FIELD4 = @IN_MY_FIELD4 AND MY_FIELD5 = @IN_MY_FIELD5 AND MY_FIELD6 = @IN_MY_FIELD6) BEGIN goto on_duplicate END 因为NULL = NULL不为真。 如何在没有每一列都具有IF IS NULL语句的情况下检查重复项?


3
MongoDB存储过程等效
我有一个包含商店列表的大型CSV文件,其中一个字段是ZipCode。我有一个名为ZipCodes的单独的MongoDB数据库,该数据库存储任何给定邮政编码的纬度和经度。 在SQL Server中,我将执行一个称为InsertStore的存储过程,该过程将对ZipCodes表进行查找以获取相应的纬度和经度,并将数据插入到Stores表中。 为此,是否有类似于MongoDB中存储过程的概念?基本上,对于每个插入,我需要查找该存储的纬度和经度,并保存它们。 我对Map / Reduce的概念不太熟悉,但这是否有意义?谢谢!

7
SQL Server在存储过程中默默地截断varchar
根据这个论坛的讨论,SQL Server(我使用的是2005,但我收集到的信息也适用于2000和2008)varchar,即使您直接使用INSERT实际上会导致错误。例如。如果我创建此表: CREATE TABLE testTable( [testStringField] [nvarchar](5) NOT NULL ) 然后当我执行以下命令时: INSERT INTO testTable(testStringField) VALUES(N'string which is too long') 我收到一个错误: String or binary data would be truncated. The statement has been terminated. 大。数据完整性得以保留,并且调用者知道这一点。现在让我们定义一个存储过程来插入它: CREATE PROCEDURE spTestTableInsert @testStringField [nvarchar](5) AS INSERT INTO testTable(testStringField) VALUES(@testStringField) GO 并执行它: EXEC spTestTableInsert @testStringField = N'string …

6
使用PL / pgSQL在PostgreSQL中返回多个字段作为记录
我正在使用PL / pgSQL编写SP。 我想返回一条记录,其中包含来自几个不同表的字段。可能看起来像这样: CREATE OR REPLACE FUNCTION get_object_fields(name text) RETURNS RECORD AS $$ BEGIN -- fetch fields f1, f2 and f3 from table t1 -- fetch fields f4, f5 from table t2 -- fetch fields f6, f7 and f8 from table t3 -- return fields f1 ... f8 as …


8
如何从C#.net代码向SQL存储过程传递空变量
我从一段C#.net代码中调用SQL存储过程: SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters); 其中sqlParameters变量被定义为: SqlParameter[] sqlParameters = new SqlParameter[SQL_NUMBER_PARAMETERS]; Log.Logger.Debug(string.Format("Running proc: {0} ", STORED_PROC_NAME)); SqlParameters[0] = new SqlParameter("fieldID", SqlDbType.BigInt ); SqlParameters[0].Value = fieldID; SqlParameters[0].Direction = ParameterDirection.Input; 现在,我需要将另外两个参数传递给此存储过程(均为Type SqlDateTime),在这种情况下将变为NULL。 谢谢, 在

4
在C#中使用存储过程输出参数
我在将来自Sql Server存储过程的输出参数返回到C#变量时遇到问题。我不仅在这里而且在其他站点上也阅读了与此相关的其他文章,但我无法使其正常工作。这是我目前拥有的。目前,我只是想打印返回的值。以下代码返回空值。我试图返回的是主键。我已经尝试使用@@IDENTITY和SCOPE_INDENTITY()(即SET @NewId = SCOPE_IDENTITY())。 存储过程: CREATE PROCEDURE usp_InsertContract @ContractNumber varchar(7), @NewId int OUTPUT AS BEGIN INSERT into [dbo].[Contracts] (ContractNumber) VALUES (@ContractNumber) Select @NewId = Id From [dbo].[Contracts] where ContractNumber = @ContractNumber END 打开数据库: pvConnectionString = "Server = Desktop-PC\\SQLEXPRESS; Database = PVDatabase; User ID = sa; PASSWORD = *******; Trusted_Connection …

4
MySQL:存储过程中的事务
我的存储过程的基本结构是 BEGIN .. Declare statements .. START TRANSACTION; .. Query 1 .. .. Query 2 .. .. Query 3 .. COMMIT; END MySQL版本: 5.1.61-0ubuntu0.11.10.1-log 当前,如果“查询2”失败,则提交“查询1”的结果。 如果任何查询失败,如何回滚事务?

12
MySQL存储过程使用或不使用它们
我们正处于一个新项目的开始,我们真的想知道是否应该在MySQL中使用存储过程。 我们将仅使用存储过程来插入和更新业务模型实体。有几个表代表模型实体,我们将在那些存储过程的插入/更新中对其进行抽象。 另一方面,我们可以从Model层调用插入和更新,但是不能在MySQL中而是在PHP中。 根据您的经验,哪个是最佳选择?两种方法的优点和缺点。就高性能而言,哪一个最快? PS:这是一个大多数阅读的Web项目,而高性能是最重要的要求。

9
以编程方式检索与SQL Server Management Studio gui返回的源相同的SQL Server存储过程源吗?
关于如何从SQL Server 2005中以编程方式获取完全相同的存储过程源的任何指示,就像我在SQL Server Management Studio中右键单击该存储过程并选择“修改”一样? 我正在尝试使用SMO,但有一些文本差异。该过程始终具有CREATE而不是ALTER,并且标头中存在一些差异,例如,我以编程方式获取的版本中缺少GO。我可以解决这些问题,但是也许有更好的方法? 同样,我在SQL Server 2005中,使用SMSE。通过Visual Studio 8 2008使用SMO。 更新:得到了一些答案,这些答案讲述了如何检索存储过程的基础知识。我正在寻找的是检索与GUI生成的文本相同(或几乎相同)的文本。 示例:对于sp_mysp,请在Management Studio中右键单击,然后选择“修改”。这将产生: 使用[MY_DB] 走 / ******对象:StoredProcedure [dbo]。[sp_mysp]脚本日期:2009年1月1日17:43:18 ****** / 设置ANSI_NULLS ON 走 将QUOTED_IDENTIFIER设置为ON 走 -============================================ -作者: -创建日期: -说明: -============================================ 更改程序[dbo]。[sp_mysp] 我想以编程方式获取相同的内容(请注意标头中的GO,并且它是ALTER PROCEDURE的事实。理想情况下,我想以最小的编程方式修复所获取的源代码。 我很高兴只收到与脚本日期详细信息不同的内容。。。

8
查询执行非常缓慢,是否有任何方法可以进一步改善它?
我有以下查询,由于有很多SUM函数调用,我的查询运行太慢。我的数据库中有很多记录,我希望获得当年和去年(过去30天,过去90天和过去365天)的报告: SELECT b.id as [ID] ,d.[Title] as [Title] ,e.Class as [Class] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col1 ELSE 0 END) as [Current - Last 30 Days Col1] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col2 ELSE 0 END) as [Current - Last 30 Days Col2] ,Sum(CASE WHEN a.DateCol >= DATEADD(QUARTER,-1,GETDATE()) …
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.