首页 > 数据库 >MSSQL插入更新语句生成

MSSQL插入更新语句生成

时间:2024-09-13 14:02:52浏览次数:8  
标签:语句 src set dbo dest col 插入 sql MSSQL

declare @srcDBName nvarchar(100),@destDBName nvarchar(100)
declare @srcTableName nvarchar(100),@destTableName nvarchar(100)
declare @strWhere nvarchar(500)
declare @sql nvarchar(max),@sql_col nvarchar(max)
declare @SFGX int
--源数据库
set @srcDBName=N'eismountainDoc_SZ'
--目的数据库
set @destDBName=N'eismountain_SZ'
--源表
set @srcTableName=N'Build'
--目的表
set @destTableName=N''
--源表条件
set @strWhere=N'SLBH='''''
--是否更新
set @SFGX=0
if @destTableName=N''
set @destTableName=@srcTableName
if @SFGX=0
set @sql='select @sql_col=ISNULL(@sql_col+'','','''')+QUOTENAME(dest.name) from '+@srcDBName+'.dbo.syscolumns src inner join '+@destDBName+'.dbo.syscolumns dest on src.name=dest.name where src.id=OBJECT_ID('''+@srcDBName+'.dbo.'+@srcTableName+''') and dest.id=OBJECT_ID('''+@destDBName+'.dbo.'+@destTableName+''') and dest.status<>128'
else
set @sql='select @sql_col=ISNULL(@sql_col+'','','''')+''dest.''+QUOTENAME(dest.name)+''=src.''+QUOTENAME(src.name) from '+@srcDBName+'.dbo.syscolumns src inner join '+@destDBName+'.dbo.syscolumns dest on src.name=dest.name where src.id=OBJECT_ID('''+@srcDBName+'.dbo.'+@srcTableName+''') and dest.id=OBJECT_ID('''+@destDBName+'.dbo.'+@destTableName+''') and dest.status<>128'
exec sp_executesql @sql,N'@sql_col nvarchar(max) output',@sql_col output
if @SFGX=0
SET @sql='insert into '+@destDBName+'.dbo.'+@destTableName+'('+@sql_col+') select '+@sql_col+' from '+@srcDBName+'.dbo.'+@srcTableName+' where'+@strWhere
else
SET @sql='update dest set '+@sql_col+' from '+@srcDBName+'.dbo.'+@srcTableName+' src inner join '+@destDBName+'.dbo.'+@destTableName+' dest'+' on ... where'+@strWhere
print @sql

翻译

搜索

复制

标签:语句,src,set,dbo,dest,col,插入,sql,MSSQL
From: https://www.cnblogs.com/cychen/p/18412073

相关文章

  • MSSQL遍历数据库根据列值查询数据
    --受理编号declare@slbhvarchar(100),@searchColumnvarchar(100)--设置被查询列值set@slbh='201703160009'--设置搜索列名set@searchColumn='SLBH'declare@tableNamevarchar(50)declare@sqlnvarchar(max),@countintset@sql=N''setNOCOUNTON--优先输出表,......
  • Python第四章节——循环语句
    学习循环语句的原因:循环在程序中和判断一样广泛存在,同样是非常多功能实现的基础一.while循环1.while循环的使用方法:while条件:    条件满足时完成的事件1    条件满足时完成的事件2    条件满足时完成的事件3    ...注意:1.只要条......
  • MyBatis 3种 使用 SQL 语句的方式;注解方式、注解提供器方式、XML 配置方式
    结论:为了统一使用方式,建议采用XML配置的方式;MyBatis提供了多种配置和使用SQL语句的方式,主要包括:注解方式(如@Select)、注解提供器方式(如@SelectProvider)和XML配置方式。每种方式都有其独特的优缺点,适用于不同的场景。以下是这三种方式的详细对比:1.@Select这类注解优点:......
  • 鹏哥C语言(进阶)27-30---循环语句 while
    #define_CRT_SECURE_NO_WARNINGS//--------------------------------------------------------------------------------------------------------------3.循环语句//while //for//dowhile#include<stdio.h>//------------------------------------------------......
  • Python文件操作:上下文管理器(with语句)②
    文章目录1.上下文管理器概述1.1什么是上下文管理器?1.2为什么使用上下文管理器?1.3`with`语句的基本语法2.文件操作中的上下文管理器2.1使用`with`语句打开文件2.2读取文件2.2.1读取整个文件内容2.2.2逐行读取文件2.3写入文件2.3.1覆盖写入2.3.2追加写入3......
  • 第十八讲:为什么我只查一行的语句,也执行这么慢?
    第十八讲:为什么我只查一行的语句,也执行这么慢?引入​ 一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要返回大量的数据。​ 但有些情况下,“查一行”,也会执行得特别慢。今天,我就跟你聊聊这个有趣的话题,看看什么情况下,会出现这个现象。需要说明的是,如......
  • 前端实现字符串插入千位分割符
     前端开发时经常会遇到需要把一个很大的金额或是银行卡号进行千位分割展示,这里分享两个常用的方法:循环遍历字符长度添加和正则替换(此方法仅适用于正整数)letnum=123456789000;functionthousandSplit(number){letstr=String(number)//数字转换为字符串letre......
  • SQL语句
    SQL语句1、DDL(数据定义语言)1、创建,删除数据库--1、创建数据库createdatabaseshujia;--指定编码创建createdatabaseshujiaDEFAULTcharsetutf8;--2、获取数据库列表showdatabases;--3、查看数据库语句showcreatedatabaseshujia;--4、删除数据库......
  • 第十七讲 为什么这些SQL语句逻辑相同,性能却差异巨大?
    第十七讲:为什么这些SQL语句逻辑相同,性能却差异巨大?简概:引入:​ 在MySQL中,有很多看上去逻辑相同,但性能却差异巨大的SQL语句。对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大。我今天挑选了三个这样的案例和你分享。希望再遇到相似的问题时,你可以做到举一反......
  • 小白学懂C语言---分支循环语句(下)
    循环语句这章我们来谈谈三种循环语句(for循环,while循环,do-while循环)1.for循环for循环应该是平时用的比较多的一种,也是一种容易理解的循环。for循环语法:for(表达式1;表达式2;表达式3){ 语句}强调一下:1.表达式1表达式2表达式3,两两之间用;隔开,记住不要写成逗......