diff --git a/src/driver/oracle/OracleDriver.ts b/src/driver/oracle/OracleDriver.ts index 134ed6bba7..ec8b550697 100644 --- a/src/driver/oracle/OracleDriver.ts +++ b/src/driver/oracle/OracleDriver.ts @@ -627,7 +627,7 @@ export class OracleDriver implements Driver { * Creates an escaped parameter. */ createParameter(parameterName: string, index: number): string { - return ":" + parameterName; + return ":" + (index + 1); } /** diff --git a/test/github-issues/5067/issue-5067.ts b/test/github-issues/5067/issue-5067.ts new file mode 100644 index 0000000000..b54159900f --- /dev/null +++ b/test/github-issues/5067/issue-5067.ts @@ -0,0 +1,24 @@ +import "reflect-metadata"; +import {expect} from "chai"; +import {Connection} from "../../../src"; +import {closeTestingConnections, createTestingConnections} from "../../utils/test-utils"; + +describe.only("github issues > #5067 ORA-00972: identifier is too long", () => { + let connections: Connection[]; + before(async () => connections = await createTestingConnections({ + entities: [__dirname + "/entity/*{.js,.ts}"] + })); + after(() => closeTestingConnections(connections)); + + it("generated parameter name returns index instead of parameter name", () => Promise.all(connections.map(async connection => { + const paramName = "output_"; + const parametersCount = 0; + const createdParameter = await connection.driver.createParameter(paramName, parametersCount); + + expect(createdParameter).to.be.not.undefined; + expect(createdParameter).to.be.not.null; + expect(createdParameter).to.be.an("String"); + expect(createdParameter).to.not.match(/(?:output_)/); + expect(await connection.driver.createParameter(paramName, 2)).to.equal(":" + 3); + }))); +});