Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道在sql中硬编码值时返回的数据类型_Sql_Sybase - Fatal编程技术网

如何知道在sql中硬编码值时返回的数据类型

如何知道在sql中硬编码值时返回的数据类型,sql,sybase,Sql,Sybase,有没有办法知道包含文本的查询返回的数据类型 例如,我很确定select1返回一个int,但是我怎么知道呢 我可以这样做,选择1+2,它将响应从“VARCHAR”到“INT”的隐式转换是不允许的,这告诉我1必须是INT。但是有更好的方法吗 编辑:我的特定用例如下所示: 我编写/修改硬编码特定值的存储过程。可能我正在替换一个过去从表中抓取的字段,或者可能我正在编写一个具有文本的新过程 如果我使用错误的ResultSet.getX,执行此存储过程的java将失败。 不必经历java测试的开销,如果有一

有没有办法知道包含文本的查询返回的数据类型

例如,我很确定select1返回一个int,但是我怎么知道呢

我可以这样做,选择1+2,它将响应从“VARCHAR”到“INT”的隐式转换是不允许的,这告诉我1必须是INT。但是有更好的方法吗

编辑:我的特定用例如下所示: 我编写/修改硬编码特定值的存储过程。可能我正在替换一个过去从表中抓取的字段,或者可能我正在编写一个具有文本的新过程

如果我使用错误的ResultSet.getX,执行此存储过程的java将失败。
不必经历java测试的开销,如果有一种简单的方法让我知道某个collumn的类型是什么,那就太好了。

这取决于PHP和MySql,例如,您可以检索字段名称和类型。
您能提供更多信息吗?

当您修改存储过程时,您肯定会知道此时存储过程是什么类型的数据,对吗?如果是这样,您可以将该信息存储在一个查找表中,以便以后可以获取该信息


除此之外,我能想到的唯一一件事是,如果您使用结果动态创建一个表,然后查询syscolumns,但这可能有点过分。

我使用Sybase已经有一段时间了,但曾经有一些系统表可以从中提取数据类型;系统对象、系统列和系统类型。例如,要返回表Accounts中所有列的数据类型,请执行以下操作:

select c.name, t.name from systypes t join syscolumns c on t.xusertype=c.xusertype where id = object_id('Accounts')

这不是答案,你需要什么样的信息?我希望找到一种只使用SQL的方法。显然,PHP必须有一种方法来确定类型是什么。它是如何做到的?@user606723您的问题的答案基本上是否定的,但我们知道您正试图解决一个特定的问题,如果您告诉我们更多关于“问题”的信息,而不是您认为可以解决问题的方法,那么这个问题可能会有答案。您使用的语言类型等信息,实施!SQL太通用了,有不同的版本。@Gabs,问题用Sybase标记。我运行它没有问题。基本上,我希望在运行它之后能够验证某个列的类型。。否则任何API等怎么知道它是什么…@user606723您不能使用ResultSet.getObject吗?然后您可以使用java来查找对象的实际类型。或者你只是在问如何避免这样做?如果你只是想逃避。。。为什么?你认为你会获得显著的绩效提升吗?仅供参考,我只是在抛砖引玉。。。我仍在思考如何直接在SQL中实现这一点,如果我想到了什么,我会回答。a在生产java中没有理由这么做,因为我已经知道数据类型应该是什么。如果不是正确的数据类型,代码将出错,这很好。因此,如果我碰巧修改了一个存储过程并使用了一个文本,我需要确保我没有更改该文本的类型。目前唯一的方法是对java代码进行单元测试,并确保它仍能按预期工作。但是,如果我可以做一些初始测试来双重检查sql端的数据类型,我可以先做这个检查……而且,使用getObject方法只会告诉我Java日期类型,而不是sql数据类型。你可以使用sp_help在表中找到数据类型,但是我如何仅对一个查询执行此操作?这个示例是一个查询。您将使用什么编程语言来处理此任务?在java中强制转换和使用该数据类型是否无效?显然有一种方法可以做到这一点,因为SQurrieL支持它。