varias usar unir una tabla stored sola registros pedir pasar parametros parametro generador filas consultas concatenar como columna campos sql delphi parameters ado

usar - unir varias filas en una sola sql



¿Cómo usar ADO Query Parameters para especificar nombres de tablas y campos? (1)

Los parámetros de consulta no están diseñados para parametrizar nombres de tabla.

Lo que puede hacer es usar marcadores de posición para el / los nombre / s de la tabla en su SQL, y luego usar la función de Format para reemplazar aquellos con el / los nombre / s de la tabla, y luego usar parámetros para los otros valores como de costumbre. Esto todavía es relativamente seguro a partir de la inyección SQL (la persona malévola debería conocer los nombres exactos de las tablas, la declaración SQL específica que se usa y los valores para proporcionar parámetros).

const QryText = ''update %s set :fieldname = :newid where :fieldname = :oldid''; begin Q.SQL.Text := Format(QryText, [TableName]); Q.Parameters.ParamValues[''fieldname''] := FieldName; Q.Parameters.ParamValues[''oldid''] := OldID; Q.Parameters.ParamValues[''newid''] := NewID; ... end;

Estoy ejecutando una instrucción UPDATE en TADOQuery y estoy usando parámetros para algunas cosas. Inicialmente, esto estaba funcionando bien, pero agregué otro parámetro para el nombre de la tabla y el nombre del campo, y ahora está rompiendo.

El código se ve así:

Q.SQL.Text:= ''update :tablename set :fieldname = :newid where :fieldname = :oldid''; Q.Parameters.ParamValues[''tablename'']:= TableName; Q.Parameters.ParamValues[''fieldname'']:= FieldName; Q.Parameters.ParamValues[''oldid'']:= OldID; Q.Parameters.ParamValues[''newid'']:= NewID;

Y el error que obtengo:

Supongo que esto es porque estoy usando este nombre de campo dos veces. Puedo superar esto usando otro nombre de campo único por segunda vez, sin embargo, todavía tengo otro error:

¿Cómo uso los parámetros para especificar la tabla y el campo para actualizar?