“Select * from ...”不起作用,“选择代码,从...中删除”,为什么?

时间:2011-02-23 15:10:38

标签: sql-server

我在SQL Server上运行此查询,但它不起作用:

SELECT * FROM dbo.marcas

但是如果我在查询中至少放置了一个字段,那就可以了。

SELECT code FROM dbo.marcas

我知道这一定很简单,但我找不到答案。

Thansk

4 个答案:

答案 0 :(得分:3)

最有可能的是,其他人正在更新同一个表,因此会在桌面上放置某些锁。

执行SELECT * ...时,这些锁定会导致冲突并且您的查询将无法执行,而SELECT (list of columns)......将起作用(因为它不受锁影响)

答案 1 :(得分:1)

我正在回答我自己的问题,因为我自己找到了答案。

使用EMS Sql Manager 2008 for SQL Server我执行select * from marcas并且没有结果,只有错误。但如果我重新创建了桌子,瞧,它工作得很好!!!

所以问题是我在服务器中创建表的方式。过了一会儿,我意识到使用ODBC在Foxpro中创建表的命令是:

oerr = sqlexec(oconn, "ALTER TABLE ["+xtabla+"] ADD ["+borrar.field_name+"] "+tipo_campo(borrar.field_type, borrar.field_len, borrar.field_dec),"")

所以改为:

oerr = sqlexec(oconn, "ALTER TABLE ["+xtabla+"] ADD ["+alltrim(borrar.field_name)+"] "+tipo_campo(borrar.field_type, borrar.field_len, borrar.field_dec),"")

也就是说,我刚刚删除了表名后面的额外空格。

多数民众赞成,“codigo”不等于“codigo”。

感谢所有试图帮助我的人。

我beleve

答案 2 :(得分:0)

一种可能性是,如果表中有一个计算列,当SQL Server尝试计算它时会产生错误。示例代码:

create function dbo.Crash ()
returns int
as
begin
    return 1/0
end
go
create table dbo.cctest (
    Col1 int not null,
    Col2 int not null,
    CrashCol as dbo.Crash()
)
go
insert into dbo.cctest (Col1,Col2)
select 1,2 union all
select 3,4
go
select Col1 from dbo.cctest
go
select * from dbo.cctest
go

结果:

Col1
----
1
3

(2 row(s) affected)

Col1  Col2  CrashCol
--------------------

(2 row(s) affected)
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.

所以第一个选择工作,因为它没有访问故障计算列

答案 3 :(得分:0)

我建议在除EMS之外的SQL客户端中运行查询,希望您能收到提供信息的错误消息。

“Laoperaciónenvariospasosgeneróerrores。Compruebe los valores de estado。” - > “多步操作产生错误。检查状态值。”