我的存储过程存在问题
ALTER PROCEDURE [dbo].[TIGER_CREATE_RUNTIME_TABLE](@NOMBRE_TABLA varchar(100))
AS
DECLARE @SQLQUERY1 AS NVARCHAR(600)
BEGIN
SET @SQLQUERY1 = 'CREATE TABLE '+@NOMBRE_TABLA + '(
SEGMENTO varchar(200) NULL,
TCNFOL varchar(200) NOT NULL,
TCCOPL_A varchar(200) NULL,
ID_LIN_NEG varchar(200) NULL,
TIP_LIN varchar(200) NULL,
MON_ID_MONEDA varchar(200) NULL,
LINEAS_FACT varchar(200) NULL,
CF_VOZ varchar(200) NULL,
CF_DATOS varchar(200) NULL,
ADIC_MINS varchar(200) NULL,
ADIC_LDN varchar(200) NULL,
ADIC_LDI varchar(200) NULL,
ADIC_SMS varchar(200) NULL,
PAQ_SMS varchar(200) NULL,
ADIC_DATOS varchar(200) NULL,
OTROS varchar(200) NULL,
SUB_TOT varchar(200) NULL,
PERIODO_ANALISIS varchar(200) NULL,
PERIODO_ALTA varchar(200) NULL,
CATEGORIA varchar(200) NULL,
RUC varchar(200) NULL)'
EXEC sp_ExecuteSql @SQLQUERY1
END
如您所见,我正在使用动态SQL,但执行时出错。
男装。 102,Level 15,State 1,Line 20
'varch'附近的语法不正确。
动态SQL有什么问题吗?谢谢你一段时间。
答案 0 :(得分:5)
我会将您的@sqlquery1
更改为varchar(max)
,我认为您在添加表名时达到了字符数限制:
DECLARE @SQLQUERY1 AS NVARCHAR(max)
您的查询字符串限制设置为600但是当您添加最多varchar(100)
的表名时,您很可能超出限制。
如果只运行以下没有表名,则len为726个字符:
DECLARE @SQLQUERY1 AS NVARCHAR(max)
SET @SQLQUERY1 = 'CREATE TABLE (
SEGMENTO varchar(200) NULL,
TCNFOL varchar(200) NOT NULL,
TCCOPL_A varchar(200) NULL,
ID_LIN_NEG varchar(200) NULL,
TIP_LIN varchar(200) NULL,
MON_ID_MONEDA varchar(200) NULL,
LINEAS_FACT varchar(200) NULL,
CF_VOZ varchar(200) NULL,
CF_DATOS varchar(200) NULL,
ADIC_MINS varchar(200) NULL,
ADIC_LDN varchar(200) NULL,
ADIC_LDI varchar(200) NULL,
ADIC_SMS varchar(200) NULL,
PAQ_SMS varchar(200) NULL,
ADIC_DATOS varchar(200) NULL,
OTROS varchar(200) NULL,
SUB_TOT varchar(200) NULL,
PERIODO_ANALISIS varchar(200) NULL,
PERIODO_ALTA varchar(200) NULL,
CATEGORIA varchar(200) NULL,
RUC varchar(200) NULL)'
select LEN(@sqlquery1)
如果您将查询字符串保留为600
的长度,则您的create table语句将被截断并将生成错误。