我GOOGLE了这一点,并不断提出“不,这是不可能的”,但这些职位是2005 – 2007年,所以我想知道这是否已经改变。 一个代码示例: CREATE PROCEDURE `blah` ( myDefaultParam int = 0 — This breaks the code for some reason ) BEGIN — Do something here END 其中一个解决scheme是传递null,然后检查null并设置variables。 我不想这样做,我不应该这样做。 如果这是真的,那么MySql开发人员需要唤醒,因为我可以用MSSQL做更多的事情。
我想在我的表中插入数据,但只插入不存在于我的数据库! 这里是我的代码: ALTER PROCEDURE [dbo].[EmailsRecebidosInsert] (@_DE nvarchar(50), @_ASSUNTO nvarchar(50), @_DATA nvarchar(30) ) AS BEGIN INSERT INTO EmailsRecebidos (De, Assunto, Data) VALUES (@_DE, @_ASSUNTO, @_DATA) WHERE NOT EXISTS ( SELECT * FROM EmailsRecebidos WHERE De = @_DE AND Assunto = @_ASSUNTO AND Data = @_DATA); END 而错误是: 消息156,级别15,状态1,过程EmailsRecebidosInsert,行11 关键字'WHERE'附近的语法不正确。
我已经看到了命名存储过程的各种规则。 一些人在usp_前面加上了sproc的名字,其他的名字是应用名称的缩写,还有一些是所有者的名字。 除非你是真正的意思,否则你不应该在SQL Server中使用sp_。 一些用动词(Get,Add,Save,Remove)启动proc名字。 其他则强调实体名称。 在拥有数百个sprocs的数据库中,当您认为已经存在的时候,可能会很难滚动并find合适的sproc。 命名约定可以使查找更简单。 你使用命名约定? 请描述一下,并解释为什么你比其他select更喜欢它。 答复摘要: 每个人似乎都提倡命名的一致性,对于每个人来说,使用相同的命名约定可能比使用特定命名约定更为重要。 前缀:当很多人使用usp_或类似的东西(但很less使用sp_)时,许多人使用数据库或应用程序名称。 一个聪明的DBA使用gen,rpt和tsk来区分用于报告或任务的一般CRUD sprocs。 动词+名词似乎比名词+动词稍微受欢迎。 有些人对动词使用SQL关键字(Select,Insert,Update,Delete),而其他人则使用非SQL动词(或缩写),如Get和Add。 有些区分singluar和复数名词来表示是否正在检索一个或多个logging。 最后在适当的地方build议一个额外的短语。 GetCustomerById,GetCustomerBySaleDate。 有些人在名字段之间使用下划线,有些人避免使用下划线。 app_ Get_Customer与appGetCustomer – 我想这是一个可读性问题。 可以将大量sprocs分离到Oracle包或Management Studio(SQL Server)解决scheme和项目或SQL Server架构中。 应该避免不可思议的缩写。 为什么我select我所做的答案:有很多好的答案。 谢谢你们! 正如你所看到的,select一个将是非常困难的。 我select的那个对我产生了共鸣。 我遵循了他描述的相同的path – 尝试使用Verb + Noun,然后无法find所有适用于Customer的sprocs。 能够find现有的sproc,或者确定是否存在,是非常重要的。 如果有人无意中用另一个名字创build了一个重复的sproc,就会出现严重的问题。 由于我通常在数以百计的sprocs非常大的应用程序工作,我有一个最容易find命名方法的首选项。 对于较小的应用程序,我可能会提倡动词+名词,因为它遵循方法名称的通用编码约定。 他还提倡使用应用程序名称而不是非常有用的usp_作为前缀。 正如几个人指出的,有时数据库包含多个应用程序的sprocs。 因此,以应用程序名称作为前缀有助于分离sprocs,并帮助DBA和其他人确定哪个应用程序是用于sproc的。
如何调用一个表中的每一行的存储过程,其中一行的列是input参数的SP 没有使用光标?
如何在mysql命令行中看到存储过程或存储函数的列表,如show tables; 或show databases; 命令。
我在看MySQL存储过程和函数。 真正的区别是什么? 他们似乎是相似的,但function有更多的限制。 我可能是错的,但似乎一个存储过程可以做所有事情,更多的存储function可以。 为什么/什么时候我会使用一个过程vs一个函数?
我试图传递一个表名到我的MySQL存储过程使用此sprocselectclosures不同的表,但它不工作… 这是我正在尝试: CREATE PROCEDURE `usp_SelectFromTables`( IN TableName varchar(100) ) BEGIN SELECT * FROM @TableName; END 我也试过它没有@符号,只是告诉我,TableName不存在…我知道:)
我正在尝试编写一个存储过程,从表中select列并向ResultSet中添加2个额外的列。 这两个额外的列是date时间字段表中字段转换的结果。 date时间格式字段具有以下格式'YYYY-MM-DD HH:MM:SS.S' 2个附加字段应该采用以下格式: DDMMM HHMMT,其中T是“A”,下午是“P” 示例:如果字段中的数据是“2008-10-12 13:19:12.0”,则提取的字段应该包含: 12OCT 0119P 我曾尝试使用CONVERTstring格式,但没有任何格式匹配我想要得到的输出。 我正在考虑通过CONVERT提取字段数据,然后使用REPLACE,但是我当然需要一些帮助,因为我不确定。 谁可以精通存储过程帮助我在这里? 谢谢!