在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
Run Code Online (Sandbox Code Playgroud)is used to execute a stored procedure or an extended stored程序(ESP).如果批处理中有多个语句,则必须使用此关键字.
execute也用于执行包含Transact-SQL的字符串.
但是我上面的例子给出了一个错误.难道我做错了什么?
我有一个名为"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(如果省略显式值).
我请求帮助理解来自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而言,并且根本没有实现一个不支持的功能.
目前,我可以通过执行以下操作为本地数据库设置加密密钥:
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)
我认为正在发生的是,尽管数据库已成功创建,但它仍然是加密的.我该如何解密?
我正在使用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) 我有以下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以确保这一点.如果确实如此,那么有一种方法可以重构/编码我的查询,以便不会发生子选择吗?
我知道这似乎我只是在这里挑选,但我只是好奇.
在数据库迁移期间,我遇到了以下形式的数据库表约束:
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) 我的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) 我有200K行要插入一个数据库表中.我尝试jdbcTemplate.batchUpdate在春天使用,以便每批次插入10,000.但是,此过程会消耗太多时间(对于200K行,为7分钟).所以在数据库方面,我检查插入的行数select count(*) from table_X.我发现行数略有增加,预计为10K.任何人都可以解释是什么原因或者是应该在数据库端配置的东西吗?
PS:我正在使用sybase ....
我尝试使用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)