【问题标题】:Use of temporary functions or procedure within a script在脚本中使用临时函数或过程
【发布时间】:2016-08-04 13:37:05
【问题描述】:

我正在使用 SQL Server 2012,我有一个脚本,我通过该脚本向表中插入值,在该脚本中,我必须转换一些 DateTime 变量的格式两个参数。

我可以在sql 中使用CASEif 条件来做到这一点。我不能在我可以参考的数据库中创建任何Functionprocedure

是否有任何其他方法,例如在 脚本 中创建 temporary functiontemporary procedure 以应用条件更改 Datetime 值的格式?

【问题讨论】:

  • 如果你可以使用case 做到这一点,你为什么想要一个临时函数/程序?
  • @HoneyBadger 实际上确实存在临时程序,但不存在函数。我从来没有使用过它们,因为它们看起来毫无意义,但它们是可用的。

标签: sql sql-server sql-server-2012


【解决方案1】:

是的,你可以:

CREATE PROCEDURE #usp_TempOne 
@Input INT,
@Output INT OUTPUT
as 
SET @Output = @Input * 2
RETURN
GO
DECLARE @i INT = 10, @o INT;
EXEC #usp_TempOne @i, @o OUTPUT
SELECT @o

【讨论】:

  • 我尝试使用临时过程,但无法设置从存储过程返回到列的内容。实际上,我在 Temp 过程中传递了三个值,前两个是第三个值格式将根据这些值更改的值。并将返回值存储在参数中。你能给我提供执行临时过程并获取它返回到不同参数的值的语法吗?
  • 好的。不幸的是,SP 解决方案有点有限,它并没有适用于函数可以使用的任何地方(例如,在选择字段列表旁边等:/(今天下午跑到今天想写一个快速丢弃的 /function/ 来做某事和令我惊讶的是你不能。SP不会帮助我,因为我需要计算在连接条件内以及另一个查询的输出列表等中,对于我正在做的一些数据处理......所以需要的是函数,而不是 SP)
  • 我现在每天使用临时 SP 100 次,持续了 10-15 年。你几乎可以在里面做任何事情。使用临时表。从性能的角度来看,这可能不是最好的,但您仍然可以做到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2014-08-18
  • 2020-04-09
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多