Oi George,
Concatenação de valores sempre permite SQL injection... Toma cuidado com isso.
Fora isso, pro Java, você deve informar pelo menos a lib que está utilizando, e a forma de conexão com o banco, senão fica difícil a gente te ajudar.
Vou supor que você está usando o JDBC direto e a lib java.sql, pela linha de código que você passou. Então, a sua conexão do Java com o Oracle deve estar usando a interface java.sql.Connection.
Vamos lá, digamos que um objeto con usa a interface citada acima (java.sql.Connection) e a conexão já está aberta e configurada. Então o certo seria usar o java.sql.PreparedStatement para montar e executar o seu insert.
Selecionar tudo
PreparedStatement stmt = con.prepareStatement("Insert into venda(vendata,venclicodigo,venfuncodigo) values (?,?,?)");
stmt.setDate(1, vendata);
stmt.setString(2, venclicodigo);
stmt.setString(3, venfuncodigo);
stmt.execute();
Veja que a data é setada com o setDate, os outros parâmetros eu coloquei como String, mas se não forem, você troca pro tipo correto... Desta forma você consegue executar qualquer SQL, e ainda "trata" o problema do SQL injection.
Como faz um tempinho que não mexo xom o java, então pode ter algum errinho, mas o caminho é esse aí...
Se você não conseguir, posta aí, mas acho melhor mover o tópico pro fórum de Java, pois o assunto aqui já não é sobre SQL e sim sobre Java.