CREATE PROCEDURE SP_insertXXB
@tableName nvarchar(20),
@服务类型 nvarchar(2),
@帐单类型 nvarchar(4),
@计费 money
AS
declare @sql varchar(2000)
set @sql='insert into' + @tableName +'('+
'服务类型,帐单类型,计费'+
')'+'values' + '(' +
@服务类型+','+
@帐单类型+','+
cast(@计费 as varchar(20))+','+ ')'
exec(@sql)
GO
=============>
convert(varchar,@计费)+','+ ')'
先插入一条记录的其他字段,然后再些一条insert语句用来插入这特殊的一列,呵呵
CREATE PROCEDURE SP_insertXXB
@服务类型 nvarchar(2),
@帐单类型 nvarchar(4),
@计费 money
AS
insert into XXB_200506(服务类型,帐单类型,计费) values(@服务类型,@帐单类型,@计费)
GO为什么用了表名变量就就会报错?
CREATE PROCEDURE SP_insertXXB
@tableName nvarchar(20),
@服务类型 nvarchar(2),
@帐单类型 nvarchar(4),
@计费 money
AS
insert into @tableName(服务类型,帐单类型,计费) values(@服务类型,@帐单类型,@计费)
GO
create table a(
m varchar(20)
)declare @m money
set @m=12313.132
insert into a values(@m)
CREATE TABLE [XXB] (
[序号] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,
[服务类型] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[帐单类型] [nvarchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[计费] [money] NULL
) ON [PRIMARY]
GO计费字段是money类型的
m money
)declare @m money,@sql varchar(1000)
set @m=12313.132
set @sql='insert into a values('+@m+')' --这是因为 'insert into a values(' 是一个字符串,它不能跟 @m money 类型相加,所以要先转化 @m 为字符串类型才行
select @sql
execute(@sql)
CREATE PROCEDURE SP_insertXXB
@tableName nvarchar(20),
@服务类型 nvarchar(2),
@帐单类型 nvarchar(4),
@计费 money
AS
insert into @tableName(服务类型,帐单类型,计费) values(@服务类型,@帐单类型,@计费)
GO