JMP 13 JSL 將變量傳遞給 Oracle SQL 語句我正在與一位同事合作,他有一個 JMP 13 腳本,可以使用模態窗口定義變量。然後,用戶選擇設置我們想要傳遞到 SQL 語句中腳本的打開數據庫部分的變量。在模態窗口中選擇烤箱的數據表會更新。然後,我們選擇烤箱列,將此值傳遞到我們的 SQL 語句中。
例子。
OvenList={18,22};
nw=New Window( " Reference Units",<<MODAL></MODAL>
我們遇到的問題如下...
oven_id:腳本傳遞 [2,2]
test_part_id:腳本傳遞 {"partid1","partid2"}
問題
1)我們如何選擇烤箱列中的第一個值設置為傳遞給 SQL 語句的烤箱 ID?
2)Oracle似乎不喜歡括號和雙引號。 如果我們硬編碼單引號和部件 ID 例如:IN('partid1','partid2')
幫助!!!
回复:JMP 13 JSL 將變量傳遞給 oracle SQL 語句很高興它對你有效。^varname^ 構造需要與評估插入。使用 evalinsert 可以使代碼看起來更簡潔,並且您不需要使用 char() 將數字轉換為字符串。
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql = evalinsert(
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = ^oven_id[1]^
AND db.table.field In ^test_part_in_list^ ORDER BY test_part_id ASC");
Open Database( -- connection string info -- , sql, "dataset");回复:JMP 13 JSL 將變量傳遞給 oracle SQL 語句普羅茲,
感謝您的快速回復和代碼建議。它非常適合我們的應用程序。非常感謝。我們使用 ^var_name^、^||var_name||^ 等嘗試了來自各個論壇的各種解決方案。您通過構建列表的解決方案是我們缺少的解決方案步驟。
回复:JMP 13 JSL 將變量傳遞給 oracle SQL 語句獲取值返回一個列表,因此您需要引用各個數組元素才能使用它們。您可以使用串聯項目創建 IN 列表。這將起作用:
test_part_in_list = "('" || concat items(test_part_id, "', '") || "')";
sql =
"Select db.table.field1
db.table.field2
db.table.field3
FROM db.table
WHERE db.table.exprmt = 'blah'
AND db.table.field = " || char(oven_id[1]) || "
AND db.table.field In " || test_part_in_list || "ORDER BY test_part_id ASC";
Open Database( -- connection string info -- , sql, "dataset");