这是Python还是sqlserver的bug?

2024-09-29 23:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是:Windows7、Python2.5和SQLServer2005,SQLNCLI作为提供者。我有一个表,它的名字是table,它的字段是FIELD0,FIELD1,FIELD2。在

你可以找到SQLNCLI.msi这里:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d09c1d60-a13c-4479-9b91-9e8b9d835cdc&displaylang=en

我正在尝试使用存储过程。它的目的是更新一行,或者在它不存在时插入它。当它到达insert语句时,一切都会出错,但插入成功。以下是代码

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

create procedure [dbo].[TEST0]
    @FIELD0             varchar(200) 
as
begin
    declare @exist varchar(MAX)

    set @exist = (select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0)

    if @exist is null
    begin
        insert into [TABLE] ([FIELD0],[FIELD1],[FIELD2]) values (@FIELD0,'FIELD1','FIELD2')

        select top 1 [FIELD0] from [TABLE]
        where 
            [FIELD0] = @FIELD0
        return 10
    end
    else
        select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0 
end

要查看bug,请运行此Python代码两次;第一次失败,第二次成功:

^{pr2}$

Tags: 代码fromontoptablewhereselecten
1条回答
网友
1楼 · 发布于 2024-09-29 23:31:56

我修好了:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

alter procedure [dbo].[TEST0]
    @FIELD0             varchar(200) 
as
begin
    set nocount on <=============================add this
    declare @exist varchar(MAX)

    set @exist = (select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0)

    if @exist is null
    begin
        insert into [TABLE] ([FIELD0],[FIELD1],[FIELD2]) values (@FIELD0,'FIELD1','FIELD2')

        select top 1 [FIELD0] from [TABLE]
        where 
            [FIELD0] = @FIELD0
    end
    else
        select top 1 [FIELD0] from [TABLE] where [FIELD0] = @FIELD0 
    set nocount off <=============================add this
end

相关问题 更多 >

    热门问题