我在这里面临一些问题,希望得到你们的技术建议。
我的以下数据包含TableA
中的特殊字符:
ID Data
----- -------
101 ABÇ.123
这是TableA
列数据类型:
Name Type
---- --------------
ID NUMBER
Data VARCHAR2(2000)
我使用以下查询选择此数据:
SELECT Data
INTO var_x
FROM TableA
WHERE ID = 101;
之后,我使用以下查询对INSERT
执行TableB
语句:
INSERT INTO TableB
(
DataB
)
VALUES
(
var_x
);
以下是TableB
列datatype
和var_x
数据类型:
Name Type
---- --------------
DataB VARCHAR2(2000)
var_x VARCHAR2(500)
但是,我在测试脚本后收到以下错误消息:
PL / SQL:数字或值错误:字符串缓冲区太小
是否有其他方法可以选择具有特殊字符的数据并将其插入另一个表?请指教。
谢谢!
答案 0 :(得分:0)
请确保声明var_x
足够大,以处理可插入DataB
的数据。
因此请将其更改为varchar2(2000)
。
您可以声明var_x
以避免必须确保宣布其大小合适的另一种方式是声明如下:
var_x TableB.DataB%type; -- declares var_x to be of the same type as the DataB column
修改强>
不言而喻,您还应该确保声明var_x
足够大,以便处理TableA.Data
中的值。你没有显示那个的定义。但我认为你明白了。
答案 1 :(得分:0)
除了提到的内容之外,您还可以在一次操作中进行选择和插入。
INSERT INTO TableB
(
DataB
)
SELECT Data
FROM TableA
WHERE ID = 101;
这将告诉您目标表的列是否小于源(在您的示例中不是这种情况)。