Questions tagged «stored-procedures»

安装在数据库管理器上的可调用代码,公开了可通过其调用的API。通常使用本地查询语言编写的某些DBMS平台也支持其他语言。

2
如何创建Unicode参数和变量名
所有这些工作: CREATE DATABASE [¯\_(ツ)_/¯]; GO USE [¯\_(ツ)_/¯]; GO CREATE SCHEMA [¯\_(ツ)_/¯]; GO CREATE TABLE [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯] NVARCHAR(20)); GO CREATE UNIQUE CLUSTERED INDEX [¯\_(ツ)_/¯] ON [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯]); GO INSERT INTO [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]([¯\_(ツ)_/¯]) VALUES (N'[¯\_(ツ)_/¯]'); GO CREATE VIEW [¯\_(ツ)_/¯].[vw_¯\_(ツ)_/¯] AS SELECT [¯\_(ツ)_/¯] FROM [¯\_(ツ)_/¯].[¯\_(ツ)_/¯]; GO CREATE PROC [¯\_(ツ)_/¯].[sp_¯\_(ツ)_/¯] @Shrug NVARCHAR(20) AS SELECT [¯\_(ツ)_/¯] FROM [¯\_(ツ)_/¯].[vw_¯\_(ツ)_/¯] …

4
在SQL Server中创建可以保存存储过程结果的临时表的最简单方法是什么?
很多时候,在处理SQL Server时,我需要编写如下内容。 create table #table_name ( column1 int, column2 varchar(200) ... ) insert into #table_name execute some_stored_procedure; 但是,创建一个具有与存储过程相同的语法的表是一项繁琐的任务。例如,sp_helppublication的结果有48列!我想知道是否有任何简单的方法可以做到这一点。 谢谢。

5
我可以启动存储过程并立即返回而无需等待它完成吗?
我们有一个存储过程,用户可以手动运行该存储过程以获取全天不断使用的报告的一些更新编号。 我有第二个存储过程,应该在第一个存储过程运行之后运行,因为它基于从该第一个存储过程获得的数字,但是它需要更长的时间运行并且用于单独的过程,所以我不想让用户等待第二个存储过程运行。 有没有一种方法可以让一个存储过程启动另一个存储过程,然后立即返回而无需等待结果? 我正在使用SQL Server 2005。

6
“存储过程”和“存储函数”之间有什么区别?
因此,该问题的评论提到,PostgreSQL中的“存储过程”和“存储功能”略有不同。 该评论链接到Wikipedia文章,但其中一些似乎不适用(例如,可以在SELECT声明中使用它们)。 该语法本身似乎有点混乱: CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ BEGIN [...] END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); 您创建了一个,FUNCTION但将其称为PROCEDURE。 那么这两者有什么区别?

2
在SQL Server中,对存储过程进行分组的目的是什么?
我必须处理的最困惑的问题之一与存储过程组有关。给定一个存储过程,usp_DoSomethingAwesome我可以通过调用它在另一个组中创建该proc usp_DoSomethingAwesome;2。 我在对一些系统生成的插入,更新和删除复制存储过程引起的某些复制问题(发布者:SQL 2000 Ent。,Dist / Sub:2008 R2 Ent)进行故障排除时发现了这一点。 具有这种“分组”能力的目的/思想是什么?

4
用sp_开头用户存储过程的名称仍然错误吗?
我的一位同事在我们的SQL Server 2008 R2数据库中命名了一个存储过程sp_something。当我看到此消息时,我立即想到:“那是错误的!” 并开始在我的书签中搜索此在线文章,该文章解释了错误的原因,因此我可以向我的同事提供解释。 在这篇文章(由Brian Moran撰写)中,解释了给存储过程一个sp_前缀使SQL Server可以在master数据库中查看已编译的计划。由于sp_sproc不在此处,因此SQL Server将重新编译该过程(并为此需要一个专用的编译锁,从而导致性能问题)。 本文提供了以下示例,以显示两个过程之间的区别: USE tempdb; GO CREATE PROCEDURE dbo.Select1 AS SELECT 1; GO CREATE PROCEDURE dbo.sp_Select1 AS SELECT 1; GO EXEC dbo.sp_Select1; GO EXEC dbo.Select1; GO 您运行此程序,然后打开Profiler(添加“存储过程-> SP:CacheMiss事件”)并再次运行存储过程。您应该看到两个存储过程之间的区别:sp_Select1存储过程将比存储过程生成一个更多的SP:CacheMiss事件Select1(本文引用了SQL Server 7.0和SQL Server 2000。) 当我在SQL Server 2008 R2环境中运行该示例时SP:CacheMiss,两个过程都得到相同数量的事件(在tempdb和另一个测试数据库中)。 所以我想知道: 我可以在执行示例时做错什么吗? sproc sp_something在新版本的SQL Server中,“不命名用户” adagium是否仍然有效? 如果是这样,是否有一个很好的示例显示其在SQL …



3
存储过程与内联SQL
我知道存储过程通过执行路径(比应用程序中的内联sql)更有效。但是,当按下时,我对原因并不了解。 我想知道这一点的技术原因(以便以后可以向某人解释)。 谁能帮我制定一个好的答案?

2
从一个存储过程启动3个存储过程时如何回滚
我有一个存储过程,其中仅执行3个存储过程。如果主控SP成功,我仅使用1个参数进行存储。 如果第一个存储过程在主存储过程中工作正常,但是第二个存储过程失败,那么它将自动回滚主SP中的所有SP还是我必须发出一些命令? 这是我的程序: CREATE PROCEDURE [dbo].[spSavesomename] -- Add the parameters for the stored procedure here @successful bit = null output AS BEGIN begin transaction createSavebillinginvoice begin Try -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; BEGIN EXEC [dbo].[spNewBilling1] END …

2
如何保留SQL Server存储过程修订的历史记录
注意:我并不是在问完整的版本控制。 有没有办法自动保留SQL Server上存储过程的历史记录。 与Google文档自动保留文档版本历史记录以及维基百科自动保留文章版本历史记录相似。 我不希望更新存储过程的用户也必须维护存储过程的存储库。这是太多的工作,人们不会做。 希望这是我可以在SQL Server中启用的功能... (实际上,存储过程是指函数,触发器等。基本上,所有内容都在“可编程性”下。) 我首先发布到/programming/14522224/how-to-keep-history-of-sql-server-stored-procedure-revisions,因为我怀疑它将在那里获得更多的意见。

8
“即使在MS SQL Server Management Studio中创建了存储过程,也找不到存储过程”
我testtable在数据库内部创建了一个testbase具有以下结构的表: product_no (int, not null) product_name (varchar(30), not null) price (money, null) expire_date (date, null) expire_time (time(7), null) 我使用了Microsoft SQL Server 2008 Management Studio。 我创建了一个存储过程testtable_pricesmaller,如下所示 use testbase go create procedure testtable_pricesmaller @pricelimit money as select * from testtable where price = @pricelimit; go 并能够Object Explorer在Microsoft SQL Server Management Studio 上查看存储过程。(它在的以下树结构中列出Object …

5
表别名是不好的做法吗?
我记得在DBMS课程中为信息服务硕士课程的学生学习过这一点。为了节省输入时间,您可以输入: SELECT t1.id, t2.stuff FROM someTable t1 INNER JOIN otherTable t2 ON t1.id=t2.id ; 但是...为什么在存储过程之类中可以接受?似乎这样做只会损害语句的可读性,同时又节省了很少的时间。有任何功能或逻辑上的理由要这样做吗?似乎增加了歧义而不是消除了歧义。我看到使用这种格式的唯一可以接受的原因是,如果要添加一个语义上有意义的别名(例如,FROM someTable idsTable当表名的描述性不足时)。 表别名是不好的做法还是只是滥用有用的系统?

2
MySQL:树层次查询
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 MySQL中的一个树内的子树 在我的MYSQL中Database COMPANY,我具有一个Table: Employee递归关联,一个雇员可以是其他雇员的老板。A self relationship of kind (SuperVisor (1)- SuperVisee (∞) )。 查询创建表: CREATE TABLE IF NOT EXISTS `Employee` ( `SSN` varchar(64) NOT NULL, `Name` varchar(64) DEFAULT NULL, `Designation` varchar(128) NOT NULL, `MSSN` varchar(64) NOT NULL, PRIMARY KEY (`SSN`), CONSTRAINT `FK_Manager_Employee` …


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.