12703。00000-“不支持此字符集转换”

时间:2019-12-01 02:17:31

标签: oracle plsql stored-functions

我正在使用一个函数来转换货币,但出现此错误12703。00000-“不支持此字符集转换”,我不知道为什么。

这是我正在使用的代码

CREATE OR REPLACE FUNCTION convert(r_comm IN commande.ref_commande%type,
                   devise IN VARCHAR2)
RETURN commande.montant_ttc%type IS
mt commande.montant_ttc%type;
montant NUMBER(20) :=0;
BEGIN
    IF devise = 'dollar' THEN
        SELECT montant_ttc INTO mt FROM commande WHERE ref_commande = r_comm;
        montant := mt*10;
    END IF;
    IF devise = 'euro' THEN
        SELECT montant_ttc INTO mt FROM commande WHERE ref_commande = r_comm;
        montant := mt*11;
    END IF;
RETURN montant;
END convert;
/

DECLARE
r_comm commande.ref_commande%type :=1;
devise VARCHAR2(6) := 'dollar';
mt NUMBER(20);
BEGIN
mt := convert(r_comm, devise);
dbms_output.put_line(mt);
END;
/

错误 enter image description here 桌子

enter image description here

1 个答案:

答案 0 :(得分:1)

似乎调用将转到其他 public async startDB(): Promise<any> { console.log('starting database...') try { await createConnection(); console.log('database started...') this.startServer(); } catch (error) { console.log(`Server can't start. Error: ${error}`) return Promise.reject('Restart server'); } } 函数(oracle提供了convert函数)。

  

Oracle version: "3.3" services: db: build: ./server/db restart: always environment: - "MYSQL_DATABASE=development_db" - "MYSQL_ROOT_PASSWORD=password" - "MYSQL_PASSWORD=password" ports: - 3306:3306 networks: - app_network server: depends_on: - "db" # this is important for sql connection. it has to wait for mysql to establish connection then run this bish build: ./server command: ["npm", "start"] restart: always ports: - "3000:3000" environment: - DATABASE_PASSWORD=password - DATABASE_HOST=db volumes: - type: bind source: ./server target: /server # this name is from dockerfile workdir networks: - app_network networks: app_network: volumes: app_volume: 函数将一个字符转换为字符串   设置为另一个。

解决方案:

我建议您更改convert的名称,因为CONVERT()是oracle函数。

在调用function时使用它。但是不建议使用相同的对象名称,因此选项1更好。

干杯!