8

I am trying to use Dapper.net with Oracle.

From this post i understood that we could use parameters with no prefixes and dapper would then work for both sql serverand oracle

I'm having a hard time making it to work without the explicit oracle named parameters prefix :

The following query

sqlConnection.Query("Select * FROM document WHERE id = param1", new { param1 = 963 });

Throws ORA-00904: "PARAM1": invalid identifier

If i try with the @ prefix it throws ORA-00936: missing expression

If i use the : prefix it works as expected. But i do not want my queries to be dependent (as far as possible) upon Oracle or Sql Server.

I am using the latest nuget package version Dapper.dll 1.12.1.1

What am I doing wrong or did i misunderstand this post?

1 Answer 1

7

Yes, you misunderstood the post. The SQL is passed through as-is, and must contain the correct :param1 or @param1 etc. The "no prefix at all" is talking about the code that you don't see - specifically, making sure that the code does (via some mechanism):

cmd.Parameters.Add("param1", 963);

vs

cmd.Parameters.Add("@param1", 963);

vs

cmd.Parameters.Add(":param1", 963);

The first (no prefix) is the correct and preferred option.

If you want the SQL in your code to be parameter agnostic, you could use the information from here: Get the parameter prefix in ADO.NET

The SQL is rarely close enough, however, that just looking up the parameter prefix will fix all problems.

Sign up to request clarification or add additional context in comments.

1 Comment

I know this is an old post, and Contrib probably came out after it. How does your answer fit with Dapper.Contrib, where I don't manage that character? That leaves dropping Contrib, and either swapping out the @ character, or using String.Format to inject the literal values into the SQL statements.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.