标签: sybase-ase

反思DEFAULT值和计算列

对于为DBIx :: Class(:: Schema :: Loader)转储Sybase模式的Perl库,我需要能够内省DEFAULT和计算列.

假设我们有:

create table bar (
  id INTEGER IDENTITY PRIMARY KEY,
  foo VARCHAR(10) DEFAULT 'foo',
  adt AS getdate(),
  ts timestamp
)
Run Code Online (Sandbox Code Playgroud)

就我而言:

select substring(c.name,1,5) name, c.cdefault, c.computedcol from syscolumns c
join sysobjects o on c.id = o.id where o.name = 'bar' and o.type = 'U'

name       cdefault    computedcol 
---------- ----------- ----------- 
id                   0        NULL 
foo          602182610        NULL 
adt                  0   618182667 
ts                   0        NULL 
Run Code Online (Sandbox Code Playgroud)

这告诉我列'foo'有一个id为602182610的存储过程,它返回值.如何从此ID中获取原始DEFAULT'foo'?

timestamp列没有计算列对象,也没有默认的sproc,但我不知何故需要知道它实际上是一个时间戳列.查看DBI返回的数据类型告诉我它是'varbinary',即时间戳的内部表示.我怎么知道它是否是一个?

它还告诉我列'adt'是一个计算列,该列的对象具有id 618182667.

在sysobjects中查找该id告诉我一些看起来很有用,除了:

select substring(name,1,15) name, type from sysobjects where …
Run Code Online (Sandbox Code Playgroud)

sql sybase-ase

4
推荐指数
1
解决办法
2610
查看次数

有没有像REPLACE这样的功能?

是否有任何函数可以替换ASE中的单词?

sybase-ase

4
推荐指数
1
解决办法
2万
查看次数

在Sybase Procedure中从表失败中选择TOP 1 *

我试图从Sybase表中仅获取一条记录,而不使用RowCount函数,即使“ WHERE Con​​dition”返回了多个结果。

SELECT TOP 1 EMPLOYEE_NAME FROM EMPLOYEES WHERE EMPLOYEEID > 50
Run Code Online (Sandbox Code Playgroud)

仅成功执行一项记录,

然而

SELECT TOP 1 EMPLOYEE_NAME FROM EMPLOYEES WHERE EMPLOYEEID > 50
Run Code Online (Sandbox Code Playgroud)

在Sybase过程中作为子查询编写时失败

sql sybase sybase-ase sybase-asa

4
推荐指数
1
解决办法
9383
查看次数

如何在sybase ase中检查表的权限

如何在sybase ase 15-2中检查表的权限.我想检查表上的所有现有权限.

I tried exec sp_helprotect 'dbo.mytable'
Run Code Online (Sandbox Code Playgroud)

另外如何检查what are all groups are having what are all permissions on a table?.

sybase sybase-ase

4
推荐指数
2
解决办法
3万
查看次数

获取sybase中存储过程的权限

如何在sybase中获取存储过程的授予权限?

sybase-ase

3
推荐指数
1
解决办法
1万
查看次数

自动增量语法错误

Sybase手册和大量示例声称我可以写:

   create table run_log (
     run_id        integer not null default autoincrement
   );
Run Code Online (Sandbox Code Playgroud)

但Sybase 15表示存在语法错误 default

syntax auto-increment sybase-ase

3
推荐指数
1
解决办法
6663
查看次数

如何使用c#通过odbc执行存储过程?

如何使用c#通过odbc执行存储过程?

我想执行它而没有sql注入的风险,我该怎么办?

c# odbc sybase-ase c#-4.0

3
推荐指数
1
解决办法
4444
查看次数

检查临时表是否存在的方法

我有以下查询:

IF NOT EXISTS (SELECT 1
               FROM   sysobjects
               WHERE  id = Object_id('tempdb..TEMP_THETH_DETAILS'))
  EXECUTE (
'CREATE TABLE tempdb..TEMP_THETH_DETAILS( THETH_ID NUMERIC(5) NOT NULL, LANGUAGE VARCHAR(3) DEFAULT ''EN'' NOT NULL)'
)

GO 
Run Code Online (Sandbox Code Playgroud)

问题是检查,似乎tempdb没有考虑,如果不存在,可能因为表是在tempdb中创建的.
所以我的问题是我可以检查临时表是否存在?

sybase sybase-ase

3
推荐指数
1
解决办法
2万
查看次数

删除ASE中列中的空格

我的列包含数据的空格:
example:| 鱼| 如何更新列,以便我的结果为:| Fish | ?
在oracle我可以修剪列:

update Example set column1 = trim(column1)
Run Code Online (Sandbox Code Playgroud)

我谷歌它,我注意到ASE没有supoort修剪.

sybase sybase-ase

3
推荐指数
2
解决办法
2万
查看次数

SQL select语句结合不同的表

说我有三个表:TableA,TableB,和TableC.每个表都有一列:ColA.

TableA是我的主表,TableA.ColA有一个价值.

我希望检查其中的一个TableB或者TableC也有一个ColA与我相对应的值TableA.ColA.

所以我的发言是:

select count(*) 
 from TableA, TableB, TableC
where ( TableA.ColA = TableB.ColA AND TableA.ColA = "ABC")  
   OR ( TableA.ColA = TableC.ColA AND TableA.ColA = "ABC" )
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

如果我TableB.ColA没有ColA值并且TableC.ColA有值,则返回的结果仍然是0.我应该算一算1.

我的select语句有什么问题?

我的TableA数据:

ColA
-----
ABC
Run Code Online (Sandbox Code Playgroud)

我的TableB数据:

ColA
----
NULL
Run Code Online (Sandbox Code Playgroud)

我的TableC数据:

ColA
----
ABC
Run Code Online (Sandbox Code Playgroud)

因为TableC.ColA并且TableA.ColA具有相同的值,它应该返回我的计数1.但事实并非如此.我的数据库是SAP …

sql sybase-ase

3
推荐指数
1
解决办法
347
查看次数

标签 统计

sybase-ase ×10

sybase ×4

sql ×3

auto-increment ×1

c# ×1

c#-4.0 ×1

odbc ×1

sybase-asa ×1

syntax ×1