首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的存储过程中有一个错误。

我的存储过程中有一个错误。
EN

Stack Overflow用户
提问于 2012-12-10 18:57:44
回答 1查看 67关注 0票数 1

我的存储过程有问题

代码语言:javascript
复制
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有什么问题吗?谢谢你一段时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 19:04:53

我会将您的@sqlquery1更改为varchar(max),我认为您在添加表名时达到了字符限制:

代码语言:javascript
复制
 DECLARE @SQLQUERY1 AS NVARCHAR(max)

您将查询字符串的限制设置为600,但是当您将表名添加到varchar(100)时,您很可能会超过这个限制。

如果只运行以下没有表名的代码,则len为726个字符:

代码语言:javascript
复制
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语句并生成错误。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13807348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档