【问题标题】:Can I insert into a temp table the result of a stored procedure plus another value?我可以将存储过程的结果加上另一个值插入到临时表中吗?
【发布时间】:2009-02-13 22:39:40
【问题描述】:

我有一个需要存储过程值的临时表。所以 SP 将 3 列插入到临时表中,然后我想在不修改 SP 的情况下为每一行添加一个日期时间。

由于我调用 SP 3 次,每次使用不同的日期时间,我不能只更新整个临时表。

有什么建议吗?

DECLARE @temp TABLE
(
    id INT IDENTITY(1,1),
    Name VARCHAR(150),
    Address VARCHAR(25),
    Date DATETIME
)

WHILE (@count>=@daysBack)
BEGIN
    SET @date=DATEADD(dd, @count, GETDATE())
    INSERT INTO @temp (Name,Address)
        EXEC[dbo].StoredProc@date

--I Want to check for Null and insert the date there
    Update @temp SET Date=@date WHERE Date='' 

    SET @count=@count-1

【问题讨论】:

  • 你能举个例子说明你现在是怎么做的吗?
  • 请添加一些示例数据:您如何称呼 SP 以及您想看到什么。
  • @Mitchel Sellers:秒到秒!

标签: sql tsql


【解决方案1】:

是的。创建临时表,并在添加的日期列中没有来自您的存储过程的表示,放置一个默认值约束 getdate() 或您需要的任何日期公式。在插入语句中明确指定列并省略日期列,它应该可以工作。随着行的添加,默认值约束将启动并为您填充该列。

示例:

create table #tmp (c1 int, c2 int, dt datetime default(getdate()) )

insert into #tmp
(c1, c2)
exec mysproc

【讨论】:

  • 谢谢....我稍微修改了一下。我输入了默认日期......然后我用我想在循环的每次迭代中插入的日期更新了默认日期。
猜你喜欢
  • 2018-11-16
  • 2020-01-26
  • 2018-07-05
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
相关资源
最近更新 更多