Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xanburzum

Criando instruções SQL dinamicamente

Recommended Posts

Podemos criar instruções SQL dinamicamente, simplesmente fazer uma função e chamar esta função quando sempre precisamos da instrução SQL, podemos passar o nome de tabela,nome da coluna separados por uma vírgula, valores das colunas separados por vírgulas, finalmente a cláusula where.Neste exemplo iremos usar um UPDATE, mas a logica fica para as demias cláusulas SQL

 

<%
Function SQLdinam(Table, dbFields, Values, WhereClause)
	if Table <> "" or dbFields <> "" or Values <> "" or WhereClause <> "" then	
		FieldArray		= split(dbFields,",")
		FieldArraySize	= ubound(FieldArray)
		ValueArray 	= split(Values,",")
		ValueArraySize 	= ubound(ValueArray)
		WhereArray	= split(WhereClause,",")
		wArraySize	= ubound(WhereArray)
		if FieldArraySize = ValueArraySize then
			Counter = 1
			ap = "'"
			if IsNumeric(ValueArray(0)) = true then
				ap = ""
			end if
			aSQLdinam = ""
			aSQLdinam = "UPDATE " & Table & " "
			aSQLdinam = aSQLdinam & "Set " & FieldArray(0) & " = " & ap & ValueArray(0) & ap & ", "
			do while Counter < ValueArraySize -1
				ap = "'"
				if IsNumeric(ValueArray(counter)) = true then
					ap = ""
				end if
				aSQLdinam = aSQLdinam & FieldArray(counter) & " = " & ap & ValueArray(counter) & ap & ", "
				Counter = Counter + 1
			loop
			ap = "'"
			if IsNumeric(ValueArray(counter + 1)) = true then
				ap = ""
			end if
			aSQLdinam = aSQLdinam & FieldArray(counter + 1) & " = " & ap & ValueArray(counter + 1) & ap &" "
			ap = "'"
			if IsNumeric(WhereArray(1)) = true then
				ap = ""
			end if
			aSQLdinam = aSQLdinam & "where " & WhereArray(0) & " = " & ap & WhereArray(1) & ap & ";"
			ap = "'"
			SQLdinam = aSQLdinam							

		else
			response.write("Erro de sintaxe: Você deve ser igual Campos e Valores")	
			response.end
		end if
	else
		response.write("Erro de sintaxe: Você deve fornecer informações")
	end if
End Function

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem mais essa que achei na internet(código não é meu)

	'Monta sql dinamico ex.: update tabela set teste = @teste
	Function expSQL(sql)
		Dim rg, mts, mt, varnom, varval, varsql
		Set rg = New RegExp
		rg.Pattern = "[=\s]@([\d\w]*)"
		rg.IgnoreCase = True
		rg.Global = True
		Set mts = rg.Execute(sql)
		For Each mt in mts
			varsql = trim(replace(mt.Value,"=",""))
			varnom = replace(varsql,"@","")
			varval = eval(varnom)
			If VarType(varval) = 8 Then varval = "'" & varval & "'"
			sql = replace(sql,varsql,varval,1,1,1)
		Next
		ExpSQL = sql
		Set mts = nothing
		Set rg = nothing
	End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal boa, tb...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.