Tag: 存储过程

临时函数或T-SQL中的存储过程

有没有机会在MS SQL 2005上创build临时存储过程或函数? 我只想在我的查询中使用这个存储过程,所以执行后它将不见了。 我有一个查询,我想执行一些数据。 但是对于每个表我都会处理这个命令,我需要改变它的一些部分。 所以我想我会创build一个临时的SP,它会返回我提供的参数(比如表名等等)的查询,而不是EXEC执行这个查询。 而这个存储过程将不会对我有用,所以我想暂时使用它,以便当我结束执行我的查询 – 它将消失。

如何select一个空的结果集?

我正在MySQL中使用一个存储过程,并带有一个CASE语句。 在CASE的ELSE子句中(相当于默认值:)我想select并返回一个空的结果集,这样就避免了因为不处理ELSE情况而抛出一个SQL错误,而是返回一个空的结果集,就好像一个普通的查询将不会返回任何行。 到目前为止,我已经设法使用这样的东西: Select NULL From users Where False 但是我必须命名一个现有的表,比如这个例子中的“用户”。 它的工作原理,但我宁愿更优雅的方式,如果最终使用的表名称被重命名或删除不会中断。 我试过Select NULL Where False但它不起作用。 使用Select NULL不会返回一个空的集合,而是一行具有名为NULL并具有NULL值的列。

UNION多个存储过程的结果

我有一个存储过程,我需要调用几次不同的时间传递不同的参数。 我想收集结果作为一个单一的数据集。 是这样的可能性… exec MyStoredProcedure 1 UNION exec MyStoredProcedure 2 UNION exec MyStoredProcedure 3 我尝试使用上面的语法,但得到了错误… Incorrect syntax near the keyword 'UNION' 我正在处理的存储过程相当复杂,对我来说是一个“黑匣子”,所以我无法进入存储过程的定义并改变任何东西。 有关如何将结果汇总在一起的任何build议? 我正在使用SQL Server 2008 R2。 谢谢你的帮助。

存储过程 – 返回标识作为输出参数或标量

将logging插入到具有标识列的表中时,可以使用SCOPE_IDENTITY()来获取该值。 在存储过程的上下文中,这将是推荐的返回标识值的方法: 作为输出参数SET @RETURN_VALUE = SCOPE_IDENTITY() 作为标量SELECT SCOPE_IDENTITY() 其他方式? 任何优点/缺点每个?

当参数为空时插入默认值

我有一个表有一个默认值的列: create table t ( value varchar(50) default ('something') ) 我正在使用存储的过程将值插入到此表中: create procedure t_insert ( @value varchar(50) = null ) as insert into t (value) values (@value) 问题是,如何在@value为null时使用默认null ? 我试过了: insert into t (value) values ( isnull(@value, default) ) 这显然不起作用。 也试过了一个case陈述,但这也不太公平。 还有其他build议吗? 我是否以错误的方式去做这件事? 更新:我试图做到这一点, 而不必: 保持多个地方的default值,并 使用多个insert语句。 如果这是不可能的,那么我想我只能忍受它。 这似乎应该是可以实现的。 注意:我的实际表格有多个列。 我只是在写一个例子。

SQL Server如何在存储过程中处理关于事务的语句?

假设我有一个由多个独立的SELECT,INSERT,UPDATE和DELETE语句组成的存储过程。 没有明确的BEGIN TRANS / COMMIT TRANS / ROLLBACK TRANS逻辑。 SQL Server将如何处理这个存储过程事务明智? 每个陈述会有一个隐含的联系吗? 或者是否会有一个存储过程的事务? 另外,如何使用T-SQL和/或SQL Server Management Studio自己find这个问题? 谢谢!

为什么存储过程比查询快

我想写一个简单的单行查询来从数据库中只select一个值。 所以,如果我为这个查询编写存储过程而不是在c#代码中编写简单的select查询,那么我相信这个简单的select查询的存储过程会更快,但为什么呢? 我很困惑与存储过程vs写在我的代码简单的查询? 我很困惑,为什么存储过程比直接写在代码中的简单的查询更快?

从函数返回setoflogging(虚拟表)

我需要一个Postgres函数来返回一个虚拟表(如在Oracle中)与自定义内容。 该表将有3列和未知数量的行。 我只是无法在互联网上find正确的语法。 想象一下: CREATE OR REPLACE FUNCTION "public"."storeopeninghours_tostring" (numeric) RETURNS setof record AS DECLARE open_id ALIAS FOR $1; returnrecords setof record; BEGIN insert into returnrecords('1', '2', '3'); insert into returnrecords('3', '4', '5'); insert into returnrecords('3', '4', '5'); RETURN returnrecords; END; 这是怎么写的?

entity framework与存储过程 – 性能测量

我试图build立多lessentity framework超过存储过程。 我希望说服我的老板让我们使用entity framework,以方便开发。 问题是我跑了一个性能testing,看起来EF比存储过程慢大约7倍。 我觉得这很难相信,我想知道如果我错过了什么。 这是一个确定的testing? 我能做些什么来提高EF Test的性能吗? var queries = 10000; // Stored Proc Test Stopwatch spStopwatch = new Stopwatch(); spStopwatch.Start(); for (int i = 0; i < queries; i++ ) { using (var sqlConn = new SlxDbConnection().Connection) { var cmd = new SqlCommand("uspSearchPerformanceTest", sqlConn) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.AddWithValue("@searchText", "gstrader"); sqlConn.Open(); […]

在存储过程中执行存储过程

我想在一个存储过程中执行一个存储过程,例如 EXEC SP1 BEGIN EXEC SP2 END 但是我只希望SP1在SP2完成运行后完成,所以我需要find一种方法让SP1在SP1结束之前等待SP2完成。 SP2正在作为SP1一部分执行,所以我有这样的东西: CREATE PROCEDURE SP1 AS BEGIN EXECUTE SP2 END