有没有办法知道带有文字的查询返回了什么数据类型?
例如,我很确定select 1
会返回一个int,但我怎么知道呢?
我可以执行select 1 + "2"
,implicit conversion from 'VARCHAR' to 'INT' is not allowed
会回复1
,告诉我INT
必须是{{1}}。但是有更好的方法吗?
编辑:我的具体用例如下: 我编写/修改硬编码某个值的存储过程。也许我正在替换一个曾经从表中抓过的字段,或者我正在编写一个有文字的新程序。
如果我使用错误的ResultSet.getX(),执行此存储过程的java将失败。 如果没有经过java中测试的开销,那么如果有一种简单的方法可以告诉我某个collumn的类型是什么的话会很好。
答案 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')