0
if (oUSERDTO.EVENT_ACTION == (int)Enums.EventAction.Create && result.Equals("true"))
{
    result = "false";
    using (DBConnector oCloudConnection = new DBConnector(connectionValues[0], Convert.ToInt32(connectionValues[1])))
    {
        StringBuilder varname1 = new StringBuilder();
        varname1.Append("DO \n");
        varname1.Append("$$ \n");
        varname1.Append("BEGIN \n");
        varname1.Append("IF NOT EXISTS \n");
        varname1.Append("( \n");
        varname1.Append("SELECT 1 \n");
        varname1.Append("FROM SUSER \n");
        varname1.Append("WHERE (USER_ID=:USER_ID) \n");
        varname1.Append(") \n");
        varname1.Append("THEN \n");
        varname1.Append("INSERT INTO SUSER \n");
        varname1.Append("( \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append(") \n");
        varname1.Append("SELECT \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append("FROM SUSERTEMP \n");
        varname1.Append("WHERE 1=1 \n");
        varname1.Append("AND (USER_ID=:USER_ID) \n");
        varname1.Append("AND (REC_ID=:REC_ID); \n");
        varname1.Append("END IF; \n");
        varname1.Append("END");
        varname1.Append("$$; \n");

        oCloudConnection.CommandText = varname1.ToString();
        oCloudConnection.Parameters.Clear();
        oCloudConnection.Parameters.Add(new Parameter { Name = "REC_ID", Value = oUSERDTO.REC_ID });
        oCloudConnection.Parameters.Add(new Parameter { Name = "USER_ID", Value = oUSERDTO.USER_ID});                        
        if (oCloudConnection.ExecuteQuery() > 0)
        {
            result = "true";
        }
    }
}

In this code I want to pass parameter REC_ID, USER_ID to PostgreSQL query so the where condition works but I get a syntax error at or near ":" (System.Exception: '42601: syntax error at or near ":") how can I fix this error

I tried changing the code to

StringBuilder varname1 = new StringBuilder();
        varname1.Append("DO \n");
        varname1.Append("$$ \n");
        varname1.Append("BEGIN \n");
        varname1.Append("IF NOT EXISTS \n");
        varname1.Append("( \n");
        varname1.Append("SELECT 1 \n");
        varname1.Append("FROM SUSER \n");
        varname1.Append("WHERE (USER_ID=StringBuilder varname1 = new StringBuilder();
        varname1.Append("DO \n");
        varname1.Append("$$ \n");
        varname1.Append("BEGIN \n");
        varname1.Append("IF NOT EXISTS \n");
        varname1.Append("( \n");
        varname1.Append("SELECT 1 \n");
        varname1.Append("FROM SUSER \n");
        varname1.Append("WHERE (USER_ID=$2) \n");
        varname1.Append(") \n");
        varname1.Append("THEN \n");
        varname1.Append("INSERT INTO SUSER \n");
        varname1.Append("( \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append(") \n");
        varname1.Append("SELECT \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append("FROM SUSERTEMP \n");
        varname1.Append("WHERE 1=1 \n");
        varname1.Append("AND (USER_ID=:USER_ID) \n");
        varname1.Append("AND (REC_ID=:REC_ID); \n");
        varname1.Append("END IF; \n");
        varname1.Append("END");
        varname1.Append("$$; \n");) \n");
        varname1.Append(") \n");
        varname1.Append("THEN \n");
        varname1.Append("INSERT INTO SUSER \n");
        varname1.Append("( \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append(") \n");
        varname1.Append("SELECT \n");
        varname1.Append("USER_ID, \n");
        varname1.Append("USER_NAME, \n");
        varname1.Append("USER_DESCRIPTION, \n");
        varname1.Append("FROM SUSERTEMP \n");
        varname1.Append("WHERE 1=1 \n");
        varname1.Append("AND (USER_ID=:$2) \n");
        varname1.Append("AND (REC_ID=:$1); \n");
        varname1.Append("END IF; \n");
        varname1.Append("END");
        varname1.Append("$$; \n");

but this cause another System.Exception: '42P02: there is no parameter $2' I even tried renaming parameters to $1 and $2 still same error came. The values are coming with out a error so error must be in query so how can I fix this

the business of this is to check if the same record in one table and if not then add that record from the second table to first table if you can do it with out DO it will be fine too

4

1 Answer 1

0

use where inside of a where condition to check IF EXIST

using (DBConnector oCloudConnection = new DBConnector(connectionValues[0], Convert.ToInt32(connectionValues[1])))

{ StringBuilder varname1 = new StringBuilder();

varname1.Append("INSERT INTO SUSER \n");
varname1.Append("( \n");
varname1.Append("USER_ID, \n");
varname1.Append("USER_NAME, \n");
varname1.Append("USER_DESCRIPTION \n");
varname1.Append(") \n");
varname1.Append("SELECT \n");
varname1.Append("USER_ID, \n");
varname1.Append("USER_NAME, \n");
varname1.Append("USER_DESCRIPTION \n");
***varname1.AppendLine("FROM SUSERTEMP");
varname1.AppendLine("WHERE");
varname1.AppendLine("(SUSERTEMP.USER_ID=?USER_ID)");
varname1.AppendLine("AND (SUSERTEMP.REC_ID=?REC_ID)");
varname1.AppendLine("AND NOT EXISTS");
varname1.AppendLine("(");
varname1.AppendLine("SELECT 1 ");
varname1.AppendLine("FROM SUSER");
varname1.AppendLine("WHERE SUSER.USER_ID = ?USER_ID");
varname1.AppendLine(");");***

oCloudConnection.CommandText = varname1.ToString();
oCloudConnection.Parameters.Clear();
oCloudConnection.Parameters.Add(new Parameter { Name = "REC_ID", Value = oUSERDTO.REC_ID });
oCloudConnection.Parameters.Add(new Parameter { Name = "USER_ID", Value = oUSERDTO.USER_ID});                        
if (oCloudConnection.ExecuteQuery() > 0)
{
    result = "true";
}

}

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

Comments

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.