我正在尝试使用SQL * Plus中的PL / SQL脚本根据开发人员输入设置lineize和pagesize,以确定报表是以横向还是纵向打印。如果它是风景,我想要线条大小132和页面大小60.如果它是肖像,我分别想要88和80.
我正在尝试使用替换变量来这样做:
$('#customButton').on('click', function(e) {
const params = new URLSearchParams(document.location.search)
const amountInCents = params.get("amount")
const displayAmount = parseFloat(amountInCents / 100).toFixed(2);
// Open Checkout with further options
handler.open({
name: 'Demo Site',
description: 'Custom amount ($' + displayAmount + ')',
amount: amountInCents,
});
e.preventDefault();
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
然而,系统只是提示我手动输入行和页面的值。在SET命令中使用替换变量需要做什么?
答案 0 :(得分:3)
使用the column .. new_value ...
syntax:
COLUMN Q_LINE NEW_VALUE LINE
COLUMN Q_PAGE NEW_VALUE PAGE
SELECT DECODE('&PRINT_ORIENTATION', 'PORTRAIT', 88, 'LANDSCAPE', 132) AS Q_LINE,
DECODE('&PRINT_ORIENTATION', 'PORTRAIT', 80, 'LANDSCAPE', 60) AS Q_PAGE
FROM DUAL
/
SET LINESIZE &LINE
SET PAGESIZE &PAGE
这允许您从查询结果中定义替换值。
答案 1 :(得分:0)
使用“shell”替换变量:我们在这里处理类似问题的方法是在临时sql文件中生成正确的大小调整设置。
不确定它会有所帮助,但是这里有一个关于如何根据终端大小设置列数的提示,在@$HOME/sqlmlogin.sql
中显示:
def_editor=emacs
set null °
set arraysize 1
set pagesize 0
set serveroutput on
host > $HOME/sqltmp_size.sql ; tty -s && ( eval $( resize ) ; echo "set lines $COLUMNS\n set pages 0" >> $HOME/sql/tmp_size.sql )
-- then call the temp script
@$HOME/sqltmp_size.sql
-- remove afterwards
host rm -f $HOME/sqltmp_size.sql
并按照以下方式致电sqlplus
:
sqlplus / @$HOME/sqlmlogin.sql
因此,您也可以通过类似的脚本为用户生成所需的静态值。