选择具有特殊字符的值并插入另一个表格

时间:2015-07-07 00:42:15

标签: sql oracle plsql special-characters

我在这里面临一些问题,希望得到你们的技术建议。 我的以下数据包含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
);

以下是TableBdatatypevar_x数据类型:

Name   Type
----   --------------
DataB  VARCHAR2(2000)

var_x  VARCHAR2(500)

但是,我在测试脚本后收到以下错误消息:

  

PL / SQL:数字或值错误:字符串缓冲区太小

是否有其他方法可以选择具有特殊字符的数据并将其插入另一个表?请指教。

谢谢!

2 个答案:

答案 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;

这将告诉您目标表的列是否小于源(在您的示例中不是这种情况)。