我的存储过程有问题
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,15级,状态1,20线 不正确的语法接近'varch‘。
动态SQL有什么问题吗?谢谢你一段时间。
发布于 2012-12-10 19:04:53
我会将您的@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语句并生成错误。
https://stackoverflow.com/questions/13807348
复制相似问题