tipos generador examen ejemplos developer consultas avanzadas arcmap sql ibm-midrange

generador - AS400 consulta SQL con parámetro



sql en arcgis (3)

Estoy probando una consulta simple para obtener datos de una base de datos AS400. No estoy seguro de si la forma en que estoy usando la consulta SQL es correcta.

Aparece un error: "El parámetro es incorrecto".

Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = @Field1

No obtengo un error cuando ejecuto la siguiente consulta:

Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = ''myvalue''

Estoy usando ADODB, VBScript para probar.

Set Param1 = cmd.CreateParameter("@Field1", 129, 1, 9, "myvalue") '' 129 String cmd.Parameters.Append Param1

Vengo del entorno MS Sql, por lo que escribir para AS400 es totalmente nuevo para mí.
Gracias



Si va a conectarse al AS400 usando .NET, antes que nada debe usar el proveedor IBM.Data.DB2.iSeries .NET de IBM. Según la documentación de IBM, este es el método preferido para llamar a sql:

iDB2Connection conn = new IDB2Connnection(connectionstring); iDB2Command cmd = null; try { conn.Open(); string sql = "select * from somelibrary.sometable where a = @A and b = @B"; cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.DeriveParameters(); //this will talk to the AS400 to determine the param types cmd.Parameters["@A"].Value = Avalue; cmd.Parameters["@B"].Value = Bvalue; //execute the query cmd.ExecuteScalar(); //doesn''t have to be Scalar but you get the idea } catch (Exception ex) { //handle your exceptions } finally { cmd.Dispose(); conn.Close(); }


Ok, obtuve la solución jugando e intentando cosas diferentes.

Como dije antes, estoy acostumbrado a OLEDB y ADO.Net, así que estoy acostumbrado a hacer cosas como:

Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = @Field1

que funcionan en Access y SQL Server pero no en AS / 400.

Tengo lo siguiente para trabajar:

Select FIELD1, FIELD2 From Mylibrary.MyTable WHERE FIELD1 = ? cmd.ActiveConnection = connstr cmd.CommandType = 1''4 ''Stored Procedures ''1 Text cmd.CommandText = sql Set Param1 = cmd.CreateParameter("@Field1", 129, 1, 9, "myvalue") '' 129 String cmd.Parameters.Append Param1 Set rs = cmd.Execute()

Esto es todo VbScript. El truco fue agregar el signo de interrogación (?) En la declaración SQL.