Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 试试看Catch Can';t形手柄转换台_Sql_Sql Server_Sql Server 2008_Try Catch - Fatal编程技术网

Sql 试试看Catch Can';t形手柄转换台

Sql 试试看Catch Can';t形手柄转换台,sql,sql-server,sql-server-2008,try-catch,Sql,Sql Server,Sql Server 2008,Try Catch,为什么我不能处理alter表 Begin Try alter table nyork add [Qtr] varchar(20) End Try Begin Catch Print 'Column already exist' End Catch' 因为其中一个是transact-sql命令(try-catch),另一个是DDL语句 在执行alter语句之前,最好先查询该列是否存在 要使用MSSQL执行此操作,请参见 特别是你的案子 IF COL_LENGTH('nyork', 'Qtr')

为什么我不能处理alter表

Begin Try
alter table nyork add [Qtr] varchar(20)
End Try
Begin Catch
Print 'Column already exist'
End Catch'

因为其中一个是transact-sql命令(try-catch),另一个是DDL语句

在执行alter语句之前,最好先查询该列是否存在

要使用MSSQL执行此操作,请参见

特别是你的案子

IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
    alter table nyork
    add [Qtr] varchar(20)
END

因为其中一个是transact-sql命令(try-catch),另一个是DDL语句

在执行alter语句之前,最好先查询该列是否存在

要使用MSSQL执行此操作,请参见

特别是你的案子

IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
    alter table nyork
    add [Qtr] varchar(20)
END

你不能做这样的事。TRY…CATCH只能处理运行时错误。只要列不存在,脚本就会运行,但如果列已经存在,脚本就不会运行。对象的名称解析在编译时完成。因此,SQL Server将始终在开始执行任何操作之前识别缺少的列。因此,您不能用动态SQL做这样的事情。

您不能做这样的事情。TRY…CATCH只能处理运行时错误。只要列不存在,脚本就会运行,但如果列已经存在,脚本就不会运行。对象的名称解析在编译时完成。因此,SQL Server将始终在开始执行任何操作之前识别缺少的列。由于这个原因,您不能用动态SQL做这样的事情。

您可以用exec('alter goes here')包装它。然后catch将catch

您可以使用exec('alter goes here')将其包装起来。然后catch将catch

问谷歌,而不是我。。。“try-catch-alter-table”的第一个结果=可能与Ask Google重复,而不是我。。。“try-catch-alter-table”的第一个结果=的可能重复项