标签: sybase

Sybase,执行字符串作为sql查询

在Sybase SQL中,我想执行包含SQL的String.

我希望这样的东西能起作用

declare @exec_str char(100)
select @exec_str = "select 1"
execute @exec_str
go
Run Code Online (Sandbox Code Playgroud)

来自exec命令文档

执行| EXEC

is used to execute a stored procedure or an extended stored
Run Code Online (Sandbox Code Playgroud)

程序(ESP).如果批处理中有多个语句,则必须使用此关键字.

execute也用于执行包含Transact-SQL的字符串.

但是我上面的例子给出了一个错误.难道我做错了什么?

string sybase execute

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

SybaseDB,更改表中现有列的默认值

我有一个名为"downloads"的表,有几千行.我刚刚使用以下命令添加了一个名为is_completed的列:

ALTER TABLE downloads ADD is_completed BIT default 1 NOT NULL

现在我想将is_completed的默认值更改为0 - 我尝试此命令无效:

ALTER TABLE downloads MODIFY is_completed default 0
Run Code Online (Sandbox Code Playgroud)

这不起作用,它说我的语法接近默认值不正确.我似乎无法谷歌这为我的生活.有人知道正确的语法吗?我希望添加到此表的所有未来行都将is_completed默认为0(如果省略显式值).

sql database sybase default

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

子查询中的公用表表达式

我请求帮助理解来自Oracle,DB2,Sybase的所有RDBMS在子查询中支持公共表表达式(CTE).我知道PostgreSQL会这样做,而MS SQL Server却没有.

SELECT a.*, b.* 
 FROM (WHERE aa as (
          <<select_query>),
          SELECT * 
            FROM aa
           WHERE <<criteria>>
    ) as a
    LEFT JOIN (
        WITH bb as (
            <<select_query>
        ),
        select * from bb inner join tbl_c on <<innerjoin>> where <<criteria>>
    ) as b
    on <<join_expr>>
Run Code Online (Sandbox Code Playgroud)

我无法在子查询之外定义with子句 - 两个查询都是根据列,条件,安全性等动态生成的.此外,上述查询本身可以在另一个查询中用作子查询.总之,原理是动态生成的视图,以后可以重用.一些查询也可能将多达10-12个这样的动态视图合并在一起.问题是应用程序应该与数据库无关,至少就PG,Oracle和DB2而言,并且根本没有实现一个不支持的功能.

oracle db2 postgresql sybase common-table-expression

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

设置DataBase的加密密钥(Sybase Unwired Platform)

目前,我可以通过执行以下操作为本地数据库设置加密密钥:

 if(![MyDemo_MyDemoDB databaseExists]){
        SUPConnectionProfile* cp = [MyDemo_MyDemoDB
                                    getConnectionProfile];
        [cp setEncryptionKey:@"Yourkey"];
        [MyDemo_MyDemoDB closeConnection];
    }
Run Code Online (Sandbox Code Playgroud)

因此,当我的用户成功登录(通过提供SUPDataVault的正确密码)时,我收到以下错误:

ERROR sup_sqlite_db_ConnectionWrapperImpl.m:62 dynamicStatement: There is an exception file is encrypted or is not a database
2011-12-21 13:32:05.112 MyDemo10389:11603 MBODebugLogger: SUPPersistenceException SUPPersistenceException from find: -- sup_sqlite_db_StatementWrapperImpl: There is an exception null value for sqlite3_stmt
2011-12-21 13:32:05.225 MyDemo10389:11603 *** Terminating app due to uncaught exception 'SUPPersistenceException', reason: 'SUPPersistenceException from find: -- sup_sqlite_db_StatementWrapperImpl: There is an exception null value for sqlite3_stmt'
Run Code Online (Sandbox Code Playgroud)

我认为正在发生的是,尽管数据库已成功创建,但它仍然是加密的.我该如何解密?

sybase ios sup

7
推荐指数
1
解决办法
1293
查看次数

没有从db返回的行 - 但是有返回的记录

我正在使用jdbc sybase驱动程序(jconn3)执行select语句.我在isql上手动执行了检查语句,所有行都正确返回.在jdbc上执行的语句:

select * from mytable where date between ? and ?
Run Code Online (Sandbox Code Playgroud)

我添加了dateformat as yyyy-MM-dd HH:mm:ss并将时间值设置为开始日期的00:00:00和结束日期的23:59:59.

它不起作用.行数必须为1000但有时为770,有时为990,有时为564等.每次返回时都没有任何特定的行数.

之后我添加了一个额外的执行,它只返回行数.首先我执行 select count(*) from ... 语句然后执行select * from .... ,现在`select*from ... query每次返回正确的记录数.这与缓存无关.奇怪的是,我正在为这两个执行使用相同的preparestatement和resultset对象.

关于这个问题的任何想法?

@Rulmeq,这是代码(2012-03-29添加)

ResultSet rs = null;
PreparedStatement ps = null;

ps = myConn.getConnection().prepareStatement("select count(*) from myTable where date between ? and ?");
ps.setDate(1, new java.sql.Date(beginDate.getTime()));   // format : yyyy-MM-dd
ps.setDate(2, new java.sql.Date(endDate.getTime()));    // format : yyyy-MM-dd
rs = ps.executeQuery();
rs.next();
// some logs here

ps = myConn.getConnection().prepareStatement("select …
Run Code Online (Sandbox Code Playgroud)

java sql sybase jdbc

7
推荐指数
1
解决办法
812
查看次数

为什么LINQ-to-Entities将此查询放在子选择中?

我有以下LINQ查询:

var queryGroups = (from p in db.cl_contact_event
                   select new Groups { inputFileName = p.input_file_name }).Distinct();
Run Code Online (Sandbox Code Playgroud)

运行时转换为以下内容:

SELECT 
[Distinct1].[C1] AS [C1], 
[Distinct1].[input_file_name] AS [input_file_name]
FROM ( SELECT DISTINCT 
       [Extent1].[input_file_name] AS [input_file_name], 
       1 AS [C1]
       FROM [mel].[cl_contact_event] AS [Extent1]
)  AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)

现在我很确定有一个子选择的原因是因为我有()包围的基本LINQ查询,然后执行.Distinct()但我不太了解LINQ以确保这一点.如果确实如此,那么有一种方法可以重构/编码我的查询,以便不会发生子选择吗?

我知道这似乎我只是在这里挑选,但我只是好奇.

c# linq sybase linq-to-entities

7
推荐指数
1
解决办法
290
查看次数

引用自身的外键列的效果(或目的)是什么?

在数据库迁移期间,我遇到了以下形式的数据库表约束:

ALTER TABLE [dbo].[myTable]
ADD CONSTRAINT [someName] FOREIGN KEY ([id]) REFERENCES [dbo].[myTable] ([id])
ON DELETE NO ACTION
ON UPDATE NO ACTION
Run Code Online (Sandbox Code Playgroud)

为什么会这样做?这最初是在Sybase数据库上完成的,我们正在转换为SQL Server 2008 R2.

更新:是的,外键约束是引用相同表和相同字段的字段.

我在源Sybase数据库上运行了这个查询,发现定义了42个这些疯狂的键,所以它似乎不是一个错字.

SELECT sr.constrid as [Constraint ID],
       so.name as [Table],
       sc.name as [Column]
  FROM sysreferences sr
       INNER JOIN sysobjects so ON (so.id = sr.tableid)
       INNER JOIN syscolumns sc ON (sc.id = sr.tableid AND sc.colid = sr.fokey1)
 WHERE sr.tableid = sr.reftabid
   AND sr.fokey1 = sr.refkey1
   AND sr.fokey2 = 0
   AND sr.refkey2 = 0
Run Code Online (Sandbox Code Playgroud)

sql sybase sql-server-2008-r2

7
推荐指数
1
解决办法
649
查看次数

如何获取sybase表列名及其数据类型和顺序?

我的sybase数据库中有多个表.我想知道给定表的列名和数据类型,如(myOrder表).我怎样才能做到这一点?我在stackoverflow上找到的脚本下面从Sybase数据库中,我如何获取表描述(字段名称和类型)?.但这给了我例外syscolumns is ambiguous吗?脚本低于我用于此的脚本.

SELECT sc.* 
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'
Run Code Online (Sandbox Code Playgroud)

database sybase

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

为什么spring jdbcTemplate batchUpdate逐行插入

我有200K行要插入一个数据库表中.我尝试jdbcTemplate.batchUpdate在春天使用,以便每批次插入10,000.但是,此过程会消耗太多时间(对于200K行,为7分钟).所以在数据库方面,我检查插入的行数select count(*) from table_X.我发现行数略有增加,预计为10K.任何人都可以解释是什么原因或者是应该在数据库端配置的东西吗?

PS:我正在使用sybase ....

java sql sybase spring jdbctemplate

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

与SQL Server(和Sybase 12.5)的DBI连接不返回希腊字符

我尝试使用DBI包连接到Sybase数据库,但查询不能正确返回希腊字符.

与SQL Server的连接相同.以下是dbConnect命令的示例:

library(odbc)
con <- dbConnect(odbc::odbc(), .connection_string = "Driver={SQL Server};server=ATLAS;database=master;trusted_connection=true") 
Run Code Online (Sandbox Code Playgroud)

我使用RODBC(使用相同的系统DSN)时没有问题

在此输入图像描述

表内容:

在此输入图像描述

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=Greek_Greece.1253  LC_CTYPE=Greek_Greece.1253    LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C                 
[5] LC_TIME=Greek_Greece.1253    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] odbc_1.1.1

loaded via a namespace (and not attached):
 [1] bit_1.1-12     compiler_3.4.1 hms_0.3        DBI_0.7        tools_3.4.1    tibble_1.3.4   yaml_2.1.14    Rcpp_0.12.12   bit64_0.9-7   
[10] blob_1.1.0 …
Run Code Online (Sandbox Code Playgroud)

sql-server sybase r rstudio

6
推荐指数
1
解决办法
428
查看次数