如何更正存储过程错误#1934?(SQL Server / PHP)

jjwdesign

我正在尝试从PHP(PHP-PDO连接)执行存储过程。存储过程可以从SQL Server Management Studio(SQL控制台)完美地测试/运行;没有错误报告。当我尝试从PHP运行它时,它无法正确执行。我设法将TRY / CATCH添加到存储过程,并且从PHP exec收到以下错误信息。有人知道这个错误吗?

注意,我正在对临时表#MY_TABLE中的数据进行动态透视。我还动态地构建了要在其后执行的合并查询字符串。这是一个复杂的存储过程。

EXEC MY_STORED_PROCEDURE '24566572-290E-4FE5-9AF6-8EEE4804F091'

Array
(
    [0] => EXEC MY_STORED_PROCEDURE '24566572-290E-4FE5-9AF6-8EEE4804F091'
    [1] => stdClass Object
        (
            [queryString] => EXEC MY_STORED_PROCEDURE '24566572-290E-4FE5-9AF6-8EEE4804F091'
        )

    [2] => stdClass Object
        (
            [ErrorNumber] => 1934
            [ErrorSeverity] => 16
            [ErrorState] => 1
            [ErrorProcedure] => MY_STORED_PROCEDURE 
            [ErrorLine] => 139
            [ErrorMessage] => SELECT failed because the following SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/
        )

)

我注意到类似的问题,例如:SQL Server错误1934在对包含计算列PHP / PDO的表进行插入时发生

但是,以下是我的存储过程的顶部。我不确定为什么PHP PDO不会SET在存储过程中使用这些语句。

USE [MYDBTEST]
GO
/****** Object:  StoredProcedure [dbo].[MY_STORED_PROCEDURE]    Script Date: 06/25/2014 14:29:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_WARNINGS ON
GO
SET ANSI_PADDING ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO 
jjwdesign

好的,我用SET语句解决了问题。我正在使用MS SQL Server Management Studio(SSMS)来“修改”存储过程。当我这样做时,我注意到页面顶部有两个SET语句。不幸的是,这些SET语句不在ALTER PROCEDURE语句之内。因此,当我尝试将其他SET语句添加到页面顶部时,则不属于ALTER PROCEDURE语句,因此未保存(更改)。由于未以任何方式重新加载/修改页面,因此它们仍位于顶部。因此,解决方案是确保将所有更改放入ALTER PROCEDURE中。

USE [MYDBTEST]
GO
/****** Object:  StoredProcedure [dbo].[MY_STORED_PROCEDURE] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author:  Jeff Walters
-- Create date: 6/20/2014
-- Description: 
-- 
-- =============================================

ALTER PROCEDURE [dbo].[MY_STORED_PROCEDURE]
                (
                @id CHAR(36) = NULL
                )
AS


BEGIN

    SET ANSI_NULLS ON;
    SET QUOTED_IDENTIFIER ON;
    SET ANSI_WARNINGS ON;
    SET ANSI_PADDING ON;
    SET CONCAT_NULL_YIELDS_NULL ON;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP pdo_odbc SQL Server存储过程意外错误

来自分类Dev

如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果?

来自分类Dev

从PHP到Microsoft SQL SERVER发出执行存储过程的问题

来自分类Dev

从php调用SQL Server存储过程时中止

来自分类Dev

如何捕获SQL Server存储过程中的错误?

来自分类Dev

如何在SQL Server中测试存储过程错误

来自分类Dev

SQL Server:存储过程语法错误

来自分类Dev

SQL Server存储过程的语法错误

来自分类Dev

存储过程错误SQL Server 2014

来自分类Dev

SQL Server存储过程中的错误

来自分类Dev

存储过程错误SQL Server 2014

来自分类Dev

SQL Server存储过程更新错误

来自分类Dev

如何使用SQL Server存储过程?

来自分类Dev

如何更正SQL Server语法错误设置FK约束?

来自分类Dev

PHP与SQL Server的连接

来自分类Dev

使用存储过程,在使用PHP的SQL Server上,RowCount始终返回0

来自分类Dev

使用PHP PDO将参数传递给SQL Server存储过程

来自分类Dev

如何阻止 Hibernate 的 SQLExceptionConverter 转换存储在 SQL Server 过程中的错误消息?

来自分类Dev

SQL Server存储过程错误:需要声明表变量

来自分类Dev

SQL Server中的存储过程;语法错误

来自分类Dev

SQL Server创建存储过程语法错误

来自分类Dev

SQL Server 存储过程语法错误值

来自分类Dev

如何获取PHP中的SQL Server触发器错误?

来自分类Dev

SQL Server存储过程参数

来自分类Dev

sql server存储过程IN参数

来自分类Dev

执行SQL Server存储过程

来自分类Dev

SQL Server存储过程参数

来自分类Dev

SQL Server存储过程选择

来自分类Dev

Laravel SQL Server 存储过程