我正在尝试将PowerBuilder的东西(包含PBSELECT语句)转换为java。 除了其中的PBSELECT声明之外,我对其他东西感到很自在。
我想将PBSELECT语句转换为标准SQL格式。
PBSELECT( VERSION(400)
TABLE(NAME="table_barcode" )
TABLE(NAME="table_barcode_attrib_map" )
TABLE(NAME="table_barcode_attribute" )
COLUMN(NAME="table_barcode.label_name")
COMPUTE(NAME="IsNull(table_barcode_attrib_map.value,0) pacmed_valid")
JOIN (LEFT="table_barcode.barcode_id" OP ="=" RIGHT="table_barcode_attrib_map.barcode_id" OUTER1 ="table_barcode.barcode_id" )
JOIN (LEFT="table_barcode_attrib_map.attribute_id" OP ="=" RIGHT="table_barcode_attribute.attribute_id" OUTER1 ="table_barcode_attrib_map.attribute_id" )
WHERE( EXP1 ="( ~~"table_barcode~~".~~"barcode_id~~"" OP ="=" EXP2 =":as_barcode_id )" LOGIC ="and" )
WHERE( EXP1 ="table_barcode_attribute.attribute_name" OP ="=" EXP2 ="'PACMED VALID FLAG'" ) )
ARG(NAME = "as_barcode_id" TYPE = string)
在PBSELECT语句中,我无法理解OUTER1的JOIN子句和第一个包含~~“模式的WHERE。
请帮我转换PBSELECT到标准SQL。任何帮助高度赞赏。
答案 0 :(得分:1)
我见过人们为这种图形化SQL编码编写转换例程,但是从我从PowerBuilder工程人员那里听到的,这是不可能正确完成的。转换从数据库驱动程序和连接参数中获取有关转换的某些特定信息,因此在一个条件下工作的转换例程(例如,一个数据库引擎)可能无法在另一个条件下正常工作。
正如Slapout在评论中建议的那样(谢谢!),我的工具PBL Peeper可以提供帮助。您将需要应用程序使用的数据库连接参数(在代码或INI文件中搜索名为DBMS的属性),但之后,您可以将SQL转储到所有DataWindows(Reports / DataWindow SQL)或在时间(浏览/ RMB一个DW对象/对象报告/ DataWindow SQL)。这也是浏览代码的更好方法,特别是如果您没有PowerBuilder。
顺便说一下,如果你要转换,请记住:我已经提出了比这更大的问题清单,但你明白了。不要低估你的任务。
祝你好运,特里
答案 1 :(得分:0)
我会尝试转换它,希望我做对了
DECLARE @as_barcode_id NVarchar (max)
-- Since I don't know argument that passed by the program so I set it as max --
SELECT table_barcode.label_name,
IsNull(table_barcode_attrib_map.value,0) AS pacmed_valid
FROM table_barcode LEFT OUTER JOIN table_barcode_attrib_map
-- Frankly, I still not sure whether it should be LEFT OUTER JOIN OR RIGHT OUTER JOIN --
ON table_barcode.barcode_id = table_barcode_attrib_map.barcode_id
LEFT OUTER JOIN table_barcode_attribute
-- Frankly, I still not sure whether it should be LEFT OUTER JOIN OR RIGHT OUTER JOIN --
ON table_barcode_attrib_map.attribute_id = table_barcode_attribute.attribute_id
WHERE table_barcode.barcode_id = @as_barcode_id
AND table_barcode_attribute.attribute_name = IsNull(table_barcode_attrib_map.value,0)