我的一位同事使用Oracle SQL Developer创建了一个带INSERT INTO
查询的导出。这个导出在每个值周围放置了单引号,而不仅仅是VARCHAR。
因此,我们假设我们有一个包含这些列的简单表格(其中包括):
SOME_TEXT VARCHAR2(256 BYTE)
SOME_NUMBER NUMBER(15,2)
导出有INSERT INTO
,如下所示:
Insert into MY_TABLE (SOME_TEXT,SOME_NUMBER) values ('test text','123,45');
您可能会注意到有关十进制值('123,45'
)的两件事:
第二个很容易修复,我可以像这样在Oracle SQL Developer中插入它:
-- dot as thousand separator, comma as decimal point
alter SESSION set NLS_NUMERIC_CHARACTERS = '.,';
Insert into MY_TABLE (SOME_TEXT,SOME_NUMBER) values ('test text','123,45');
-- All other insert queries
alter SESSION set NLS_NUMERIC_CHARACTERS = ',.';
哪种方法很好。
但是,某些.sql
文件非常大,无法在SQL Developer中打开。所以我想使用SQL Plus来执行包含insert-statements的.sql
文件。
但是,即使更改了NLS_NUMERIC_CHARACTERS
,我也会在SQL Plus中出现以下错误,因为数字值周围有单引号:
SQL> @"C:\my\path\test_insert_statement.sql"
values ('test text','123,45')
*
ERROR at line 2:
ORA-01722: invalid number
我看到两种可能的解决方案,但我不知道是否有可能:
.sql
文件)?答案 0 :(得分:3)
您可以在数字值周围使用单引号。由于小数点字符而发生错误。您需要更改可以完成的小数点字符,如下所示。
class PaddedTextfield: UITextField {
var horizontalInsetValue: CGFloat = 0
var verticalInsetValue: CGFloat = 0
override func textRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: horizontalInsetValue, dy: verticalInsetValue)
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: horizontalInsetValue , dy: verticalInsetValue)
}
override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: horizontalInsetValue, dy: verticalInsetValue)
}
}