标签: sybase

Hibernate for Sybase DB 中的多语句事务中不允许使用 SELECT INTO 命令

我是 hibernate 的新手,并尝试使用 hibernate 执行从 Java 文件到 Sybase DB 的过程。当我尝试运行该应用程序时,我收到如下错误

存储过程“dbo.p_chklist_test”只能在非链式事务模式下运行。“SET CHAINED OFF”命令将导致当前会话使用非链接事务模式。

我已经检查了几个论坛,并通过运行以下命令将模式设置为“任何模式”。sp_procxmode p_chklist_test, "任意模式"

另外,我在休眠状态下将自动提交设置为 False。

现在我收到了如下所示的不同错误

Caused by: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:198)
    at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1191)
    at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:357)
    at com.lcit_release.server.dao.ReleaseItemDao.searchRecordsNew(ReleaseItemDao.java:198)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy8.searchRecordsNew(Unknown Source)
    at com.lcit_release.server.logic.ReleaseItemLogic.searchExisting(ReleaseItemLogic.java:147)
    at com.lcit_release.server.adapter.ReleaseItemLogicAdapter.search(ReleaseItemLogicAdapter.java:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597) …
Run Code Online (Sandbox Code Playgroud)

java sql sybase hibernate sap-ase

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

将行号添加到新列

我想创建一个新列并用行号填充该列中每行的值。

在oracle中可以通过这样做来实现。

alter table mytable add (myfield integer);
update mytable set myfield = rownum;
Run Code Online (Sandbox Code Playgroud)

在 SYBASE ASE 中如何完成此操作?

sql sybase rownum

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

从哪里下载 sajdbc4.jar?

我没有安装 SQL Anywhere。我尝试过jconn4和jconn3,我也尝试过jodbc4,但它们都不能满足我的需要。

我需要一个用于 Sybase 的纯 java、类型 4、jdbc 驱动程序,据我所知,它是 sajdbc.jar。但无处可见。我非常需要这个文件。有谁可以告诉我在哪里可以下载这个文件吗?

java sybase jdbc sqlanywhere

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

Sybase 检查值是否为数字

如何检查该值是否为数字?我尝试的是数字,但它返回一个错误,指出该函数未找到。

例子:

select *isnumeric*("abc") // returns 0 or false
select *isnumeric*("123") // returns 1 or true
Run Code Online (Sandbox Code Playgroud)

sybase stored-procedures isnumeric

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

Java/JDBC/Sybase登录失败-JZ00L

我在建立从 Red Hat Linux 服务器到 Sybase 服务器的 JDBC 连接时遇到困难。我从 SQLException 得到的错误代码只是“JZ00L:登录失败”,后跟“010HA:服务器拒绝了您使用高可用性功能的请求”。我没有请求使用 HA,事实上,为了确定起见,将该属性设置为 false。

我们在这台 Red Hat Linux 服务器上安装了 Sqoop,我们可以创建 Sqoop 作业,从这台 sybase 服务器上连接和查询数据。我在 Sqoop 和我的 Java 代码中使用相同的驱动程序、连接和身份验证信息。

我在互联网上看到了一些关于代码页有时会导致问题的参考资料。但我不知道如何在代码中解决这个问题。

下面是java代码:

import java.sql.*;
import com.sybase.jdbc4.jdbc.SybDriver;
import java.util.Properties;


/**
 * A JDBC SELECT (JDBC query) example program.
 */
class Query1 {

     public static void main (String[] args) {
       try {
             SybDriver sd = (SybDriver)Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance();
             System.out.println("Driver loaded");

             Connection conn = DriverManager.getConnection("jdbc:sybase:Tds:srpsyb25:2025","...","...");
             Statement  stmt = conn.createStatement();
             ResultSet  rs   = stmt.executeQuery("SELECT 1 AS One");

             while ( …
Run Code Online (Sandbox Code Playgroud)

java linux sybase jdbc sqoop

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

测试多tempdb环境中是否存在临时表?

有没有办法确定是否在会话中创建了特定的临时表而没有引用它创建的tempdb数据库?用户在登录时会分配给特定的tempdb,因此我不知道他们将使用哪个tempdb.

我不需要指定tempdb来从临时表中选择数据,所以我肯定可以看到表是否存在?

t-sql sybase temp-tables

0
推荐指数
1
解决办法
5713
查看次数

将struct的大小作为void传递给函数

我正在更改数据库库中的一些代码.它的工作方式我发送一个void指针,以获得它的大小我调用一个查询并使用查询我计算结构的大小.现在的问题是我接收结构作为参数但是函数在第一次获取之前/之中失败.之后,我需要清除结构,但我甚至没有大小.我知道最好的方法是将结构的大小作为参数发送,但我已经编译了成千上万的程序,该库是从1996开始的,所以我需要找到一种方法来计算结构大小,即使类型是无效的.

我的一个想法是计算下一个不在结构中的元素的位置

0x000010              0x000042
[int|char[30]|int|int][int]
Run Code Online (Sandbox Code Playgroud)

因此大小为32,因为0x00042-0x000010是32.

有没有办法知道我什么时候离开了这个结构.

功能的原型是

int getData(char* fields, void* myStruct)
Run Code Online (Sandbox Code Playgroud)

我需要找出结构尺寸.

对不起,如果我错过了一些信息,代码是巨大的,不幸的是我不能在这里发布.

c sybase struct pointers

0
推荐指数
1
解决办法
160
查看次数

我可以将 LIKE 与 SQL 变量一起使用吗?

我有一个查询,看起来像:

select * from Table1 where name like '%ASD%'
Run Code Online (Sandbox Code Playgroud)

我想改变它,以便我可以做这样的事情:

declare @name1 varchar(255)
select @name1 = 'dfg'
select * from Table1 where name like @name1
Run Code Online (Sandbox Code Playgroud)

我应该如何做到这一点?

sql sybase

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

SQL:不允许插入表 - 列名

好吧,也许是一个非常初学者的问题,我有下表

table name: mytable, it has 2 columns: 'ID' and 'Value'.
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的.我想通过'mytable',找出'Value = x'的条目,对于那些条目,我想添加另一个条目,其中ID等于相同的ID和值= y.

我试过了:

insert into mytable values (mytable.ID, 'y') where mytable.ID='x'
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误:这里只允许使用常量,常量表达式或变量.列名是非法的

我正在使用Sybase.这样做的正确语法是什么?谢谢.

sql sybase

0
推荐指数
1
解决办法
1667
查看次数

如何向表中添加两列

我有一张桌子.我想在此表中添加两列.

我试过这样的:

SELECT * 
into
dbo.mytable_Audit
from dbo.mytable
Run Code Online (Sandbox Code Playgroud)

但是,我需要两个colums到mytable_Audit,如何在sybase 15-2 ASE中添加它们?

sybase sybase-ase

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

SQL-如何选择“下一个最大值”记录

有趣的是,我有一个表“ addresses”,其中包含地址详细信息列表,有些缺少字段。我想识别这些行,并将其替换为先前的地址行,但是这些必须仅是不是该帐户上最新地址的帐户,它们必须是先前的地址。每个地址都有一个序列号(1、2、3、4等),因此我可以轻松地识别出最大地址,并使其不是该帐户上的最新地址,但是我该如何扫描有效的地址,” “最大-1”或“比最大少一”?任何帮助将不胜感激。

mysql sql sql-server sybase

0
推荐指数
1
解决办法
2892
查看次数

列出syBase中数据库中的所有表

在SQL Server 2012中我正在使用

USE myDatabase;
GO
SELECT  *
FROM    sys.objects
WHERE   type = 'U';
Run Code Online (Sandbox Code Playgroud)

可以在syBase中做同样的事情吗?

sybase sybase-ase sap-iq

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

Perl 无法执行 sybase 存储过程

我开始使用 perl 和 sybase。我正在尝试执行存储过程

use strict;
use warnings FATAL => 'all';
use DBI qw(:sql_types);
use DBD::Sybase;
use Data::Dumper;

my $dbh = DBI->connect($connect,$usr,$pwd)or die "Couldn't connect!\n" . DBI->errstr;
my $sth = $dbh->prepare("exec progress_web \@id=?, \@as_select=?");
$sth->bind_param(1,5374,SQL_INTERGER);
$sth->bind_param(2,1,SQL_INTERGER);
$sth->execute;
while(my $row = $sth->fetch) {
  print Dumper($row);
}
$sth->finish;
$dbh->disconnect;
Run Code Online (Sandbox Code Playgroud)

连接正常,但是当我尝试执行存储过程时,我得到

Bareword "SQL_INTERGER" not allowed while "strict subs" in use at ./sybase_test.pl line 15.
Bareword "SQL_INTERGER" not allowed while "strict subs" in use at ./sybase_test.pl line 16.
Execution of ./sybase_test.pl aborted due to …
Run Code Online (Sandbox Code Playgroud)

perl sybase

0
推荐指数
1
解决办法
76
查看次数