相关疑难解决方法(0)

如何在SQL Server 2000中传递大于varchar(8000)的字符串参数?

如果将字符串参数定义为大小超过8000,则会出现编译错误

例如

The size (9000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000).
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

t-sql sql-server parameters

3
推荐指数
1
解决办法
2910
查看次数

在模式之间复制大过程

我有一个已定义过程的架构。此过程可以修改,应该在所有租户之间复制(我们有基于架构的租约)。主要思想是拥有某种模板化过程,这些过程在修改过程后将通过其他租户的模式自动更新。为了编写此“复制”过程,我编写了以下内容:

DECLARE 
    @proc_name NVARCHAR(150) = 'ProcedureToCopy',
    @proc_sql NVARCHAR(MAX),
    @schema_name NVARCHAR(MAX) = 'test';

SELECT 
    @proc_sql = REPLACE(ROUTINE_DEFINITION, '[templates].', '['+@schema_name+'].')
FROM
    INFORMATION_SCHEMA.ROUTINES 
WHERE
    ROUTINE_TYPE='PROCEDURE' AND
    ROUTINE_NAME = @proc_name AND
    ROUTINE_SCHEMA = 'templates'

PRINT(@proc_sql);

EXEC(@proc_sql);
Run Code Online (Sandbox Code Playgroud)

但是我遇到了大程序(超过17,000个符号)的问题。由于只能NVARCHAR(MAX)用4k符号限制,因此无法复制,因此我@proc_sql被裁剪了,并且不包含所有必需的过程定义。

有人可以为我的问题提出解决方案,或者其他方法吗?

t-sql sql-server stored-procedures

3
推荐指数
1
解决办法
37
查看次数

标签 统计

sql-server ×2

t-sql ×2

parameters ×1

stored-procedures ×1