限制可在TSQL事务中使用的列数

时间:2013-08-12 10:41:39

标签: xml tsql

我有一个存储过程,用于将新记录插入到我的FOLDER表中。这个sproc使用一个处理xml字符串的函数。

ALTER PROCEDURE [dbo].[usp_FolderUploader]
@xmlString xml
AS
BEGIN TRANSACTION
BEGIN TRY
    Insert into mydb.dbo.FOLDER
    ...350 columns...
    Select
    ...350 columns...
    from mydb.dbo.myfunction(@xmlString)
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
        ROLLBACK TRANSACTION
        DECLARE @Msg NVARCHAR(MAX)  
        SELECT @Msg=ERROR_MESSAGE() 
END CATCH

(我知道,这些专栏很多,但这就是它的方式。而且他们一直在我之前使用这种表格,所以我不能只改变它。)

我的问题是我在运行我的sproc时遇到错误:

查询处理器在查询优化期间耗尽了堆栈空间。请简化查询。

所以我试着暂时评论350列中的300列。它工作得很好。我可以在这里使用的列数有限制吗?如果有,我可以使用的最大列数是多少?感谢。

修改

以下是myfunction的代码:

CREATE FUNCTION [dbo].[myfunction]
(
    @varXML AS XML
)
RETURNS TABLE
AS
RETURN
(
    SELECT Child.value('RECID[1]', 'BIGINT') 'RECID',
    ...the other 349 columns...
    FROM @varXML.nodes('DocumentElement/XMLTable') EMP(Child)
);

0 个答案:

没有答案