Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL:使用“更新临时表”;“来自变量”;查询_Sql_While Loop_Sql Server 2012_Cursor_Sql Update - Fatal编程技术网

T-SQL:使用“更新临时表”;“来自变量”;查询

T-SQL:使用“更新临时表”;“来自变量”;查询,sql,while-loop,sql-server-2012,cursor,sql-update,Sql,While Loop,Sql Server 2012,Cursor,Sql Update,我有一个连接到LotusNotes数据库的链接服务器作为源。目标将是MS SQL数据库 我有两张临时桌。第一个临时表从链接服务器中提取表名。从这里开始,我想对每个表进行记录计数,并将该值存储到表名旁边的第二个临时表中 我在尝试为每个表名运行循环或游标,然后用每个表名的记录计数更新第二个临时表时遇到问题 现在我收到一个错误“Execute附近的语法不正确”设置记录\u计数=执行(@sqlCommand) 将表变量与execute一起使用并不容易,因为动态SQL是在不同的上下文中执行的,看不到变量,

我有一个连接到LotusNotes数据库的链接服务器作为源。目标将是MS SQL数据库

我有两张临时桌。第一个临时表从链接服务器中提取表名。从这里开始,我想对每个表进行记录计数,并将该值存储到表名旁边的第二个临时表中

我在尝试为每个表名运行循环或游标,然后用每个表名的记录计数更新第二个临时表时遇到问题

现在我收到一个错误“Execute附近的语法不正确”<代码>设置记录\u计数=执行(@sqlCommand)


将表变量与execute一起使用并不容易,因为动态SQL是在不同的上下文中执行的,看不到变量,并且不能以这种方式分配execute的结果

您可以使用以下语法将结果插入到表变量中:

insert into @temp_table 
execute ('select ' + @tbl_name + ', count(*) from ' + @tbl_name ...)
或者使用temp。表,从那时起,您还可以在动态SQL中引用它们,因此您可以执行以下操作:

create table #temp_table  (
table_name varchar(1500),
record_count varchar(255),
drop_script varchar(1500),
update_script varchar(1500)
)
...
Execute('update #temp_table set record_count = (select count(*) from '
        +@tbl_name+') where table_name = '''+@tbl_name+''')

将表变量与execute一起使用并不容易,因为动态SQL是在不同的上下文中执行的,看不到变量,并且不能以这种方式分配execute的结果

您可以使用以下语法将结果插入到表变量中:

insert into @temp_table 
execute ('select ' + @tbl_name + ', count(*) from ' + @tbl_name ...)
或者使用temp。表,从那时起,您还可以在动态SQL中引用它们,因此您可以执行以下操作:

create table #temp_table  (
table_name varchar(1500),
record_count varchar(255),
drop_script varchar(1500),
update_script varchar(1500)
)
...
Execute('update #temp_table set record_count = (select count(*) from '
        +@tbl_name+') where table_name = '''+@tbl_name+''')

您使用哪种RDBMS?SSMS=SQL Server Management Studio是管理GUI应用程序,而不是实际的数据库系统,可能是SQL Server 2012,也可能是不同的版本(因为管理GUI的版本不必与基础SQL Server核心引擎的版本相同)我有一个连接到LotusNotes数据库的链接服务器作为源。目标将是MS SQL数据库。您使用哪种RDBMS?SSMS=SQL Server Management Studio是管理GUI应用程序,而不是实际的数据库系统-这可能是SQL Server 2012-也可能是其他版本(因为管理GUI的版本不必与底层SQL Server核心引擎相同)我有一个连接到Lotus notes数据库的链接服务器作为源。目标将是MS SQL数据库。您使用哪种RDBMS?SSMS=SQL server Management Studio是管理GUI应用程序,而不是实际的数据库系统-这可能是SQL server 2012-也可能是其他版本(因为管理GUI的版本不必与底层SQL Server核心引擎的版本相同)我有一个连接到Lotus notes数据库的链接服务器作为源。目标将是MS SQL数据库。