Criar Instrução SQL de Delete usando SMO

Objectivo: criar a partir de uma instrução SQL parametrizada para a eliminação de dados numa tabela.
Ferramentas: SQL Server Management Objects (SMO)
Principais objectos e propriedades: Table, Table.Columns, Column, Column.Identity, Column.InPrimaryKey
Notas:

  • chave primária não composta
  • a tabela inclui sempre uma coluna do tipo Timestamp que deve ser devolvido e que se chama lastUpdated
  • a actualização só pode ocorrer se tiver o último timestamp
  • deve ser devolvido o número de linhas afectadas pela operação de Delete
  • as colunas CreatedOn, CreatedBy, lastUpdatedOn, lastUpdatedBy existem sempre

Exemplo do resultado pretendido

Dim sql As String = "DELETE FROM {0}TM_Parametros WHERE Id = @Id AND  lastUpdated = @lastUpdated" & ControlChars.CrLf & _
					"SELECT @updatedRows = @@ROWCOUNT;"

 

Código

sb.AppendFormat("        Dim sql As String = \"DELETE FROM {{0}}{0} WHERE ", table.Name);

foreach(Column c in table.Columns)
{
	if (c.InPrimaryKey)
	{
		sb.AppendFormat("{0} = @{0} AND ", UpperCaseFirstCharacter(c.Name));
	}
}

sb.AppendLine(" lastUpdated = @lastUpdated\" & ControlChars.CrLf & _ ");
sb.AppendLine("                            \"SELECT @updatedRows = @@ROWCOUNT;\"");

 

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *