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

时间:2012-02-29 23:38:00

标签: sql sybase

有没有办法知道带有文字的查询返回了什么数据类型?

例如,我很确定select 1会返回一个int,但我怎么知道呢?

我可以执行select 1 + "2"implicit conversion from 'VARCHAR' to 'INT' is not allowed会回复1,告诉我INT必须是{{1}}。但是有更好的方法吗?

编辑:我的具体用例如下: 我编写/修改硬编码某个值的存储过程。也许我正在替换一个曾经从表中抓过的字段,或者我正在编写一个有文字的新程序。

如果我使用错误的ResultSet.getX(),执行此存储过程的java将失败。 如果没有经过java中测试的开销,那么如果有一种简单的方法可以告诉我某个collumn的类型是什么的话会很好。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当你修改存储过程时,你当然知道它是什么类型的数据,对吧?如果是这样,您可以将该信息存储在查找表中,以便以后可以使用它。

除此之外,我唯一能想到的是你是否动态创建了一个包含结果的表,然后查询了syscolumns,但这可能有点矫枉过正。

答案 2 :(得分:0)

自从我使用Sybase以来已经有一段时间了,但曾经有一些系统表可以从中提取数据类型; sysobjects,syscolumns和systypes。例如,要返回表帐户中所有列的数据类型:

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