1) - I have done this using Groovy script assertions
2) - I have done this using JDBC:
I haven't done 3 but I have called Selenium from SoapUI.
def sql = Sql.newInstance('jdbc:oracle:thin:fps/Password1@//myDBserver.test.com:1521/ABC.myDomain.com')
def res = sql.firstRow("SELECT * FROM FPS_PROPOSALS WHERE PROPOSAL_ID LIKE '15883%'")
I haven't done 4.