SQL Server 的动态语句(SQLServer 的String.format用法)(SQLServer的调用SQL占位符的使用)

直接上代码好了:


--建表语句
if exists(select 1 from [你的测试数据库名字].sys.tables where name='TDepartment')
BEGIN print '不存在该数据表,创建后继续操作'
CREATE TABLE [TDepartment](
[t_id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[code] [nvarchar](50) NULL
) ON [PRIMARY]
end
else
BEGIN
print '存在该数据库,继续操作'
end
GO

--声明下面使用的变量
declare @depart_name_num int
declare @depart_name_code int
declare @sql nvarchar(225)

declare @convert_num nvarchar(225)
declare @convert_code nvarchar(225)
--
set @depart_name_num=0
set @depart_name_code=0

while(@depart_name_num<10)
begin
--这里是为了转换变化的数字为字符拼接
set @convert_num = 'name:'+CONVERT(nvarchar(225),@depart_name_num)
set @convert_code = 'code:'+CONVERT(nvarchar(225),@depart_name_code)

print '@convert_num'+@convert_num
set @sql = 'insert into TDepartment(name,code) values(@p1,@p2)'
--因为拼接实在太麻烦了。所以才用占位变量
--set @sql = 'insert into [TDepartment](name,code) values(''value:'+@convert_num+''','''+@depart_name_code+''')'
print '@sql:1'+@sql

--这里就相当于java的为占位变量赋值
--@params是指明占位变量的类型,这里的是一行全写那些变量类型
--@p1,@p2是是自定义两边来的。只要上下名称对上。就行。
exec SP_EXECUTESQL
@stmt = @sql ,
@params = N'@p1 as nvarchar(225),@p2 as nvarchar(225)',
@p1 = @convert_num,
@p2 = @convert_code

print '@sql:2'+@sql

set @depart_name_num=@depart_name_num+1
set @depart_name_code=@depart_name_code+1

end

 如果你的连数据库名字都没有改的话。就肯定报错的

原文地址:https://www.cnblogs.com/shortboy/p/3860724.html