【问题标题】:How to insert a dynamic sql variable into a temporary table如何将动态 sql 变量插入临时表
【发布时间】:2022-01-15 11:48:30
【问题描述】:

所以我想将存储过程中的变量电子邮件、用户名和年龄插入到临时表中,但遇到了一些问题。

Declare @email [varchar](8000)
,@user_name [varchar](8000)
, age[int]
select distinct value as value
into #temptable
from @email
,@user_name
,@age


select *
from #temptable

我收到语法错误。有人有什么建议吗?

【问题讨论】:

  • 即使这样也有语法错误
  • 看起来您使用的是 Microsoft SQL Server 语法,但您将问题标记为 mysql。您真正使用的是哪个数据库品牌?
  • Microsoft SQL 对此感到抱歉

标签: sql sql-server variables stored-procedures varchar


【解决方案1】:

通常,我会使用这种语法将存储过程的结果插入到表或表变量中:

INSERT #temptable EXECUTE dbo.MyStoredProcedureName

例如(表变量示例):

declare @temptable table
(
    name varchar(255),
    field varchar(255),
    filename varchar(255),
    filegroup varchar(255),
    size varchar(255),
    maxsize varchar(255),
    growth varchar(255),
    usage varchar(255)
);

INSERT @temptable Exec sp_helpfile;
select * from @temptable ;

编辑:根据您关于为什么不能在 SP 本身中执行此操作的问题,语法类似于:

DECLARE @Email nvarchar(4000),@UserName nvarchar(4000),@age int
declare @temptable table
(
    email nvarchar(4000),
    UserName nvarchar(4000),
    age int
)

SELECT  @Email = 'test@test.com', @UserName = 'MyName', @age = 21

INSERT INTO @temptable(Email, UserName, age) SELECT @Email, @UserName, @age

SELECT * FROM @temptable

【讨论】:

  • 嗯,存储过程应该将数据插入到表中。为什么要执行另一个存储过程来做到这一点?我有点困惑
  • 抱歉,我可能没有清楚地了解您的需求。编辑回复以尝试提供帮助。
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2011-02-05
  • 2017-02-16
相关资源
最近更新 更多