0.0
No commit activity in last 3 years
No release in over 3 years
A way to neatly query Oracle with Ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 2.1.3
 Project Readme

The Oracle Query Ruby gem utilizes the existing ruby-oci8 gem to help create the oracle ruby connection and makes Oracle querying with Ruby cleaner and simplified.

You can Select, Insert, Truncate by passing in the appropriate parameters. Select you will get in return an array of values which you specify in the parameters. Insert will simply insert an array of values into the specified table. Truncate will truncate the specified table.

Usage

#CONFIG

	query =	Oracle.new(username, password, db_connection)

#SELECT

	# Query the selected table and return the results in a variable you specifiy
	# Example in this case $my_array
	
	query.select("SELECT * from TABLE_NAME", "my_array")

	$my_array.each { |result| 
		p result
	}

#INSERT

	# Insert into specified table the array of values
	# 3rd param is to turn rollback On/Off
	# If false insert will commit everytime a successful row is inserted into the table causing partial inserts
	
	query.insert("TABLE_NAME", ["'#{value[0]}', '#{value[1]}', '#{value[2]}'"], true || false )

#MERGE

	# Merges data from one table to another
	# First specify the table you want to perform the merge on
	# Second specify the table you are getting the data from temp table
	# Third the columns to link on as an array ["table.col1 = temp_table.col1"]
	# Values for when match exists as an array ["table.col2 = temp_table.col2, table.col3 = temp_table.col3"]
	# Insert Columns from the final table for when match doesnt exist as an array ["table.col1, table.col2"]
	# Insert Values from the temp table for when match doesnt exist as an array ["temp_table.col1, temp_table.col2"]

	query.merge("SCHEMA.TABLE_NAME table_name", "SCHEMA.TEMP_TABLE_NAME temp_table", ["table_name.orderid = temp_table.orderid"], ["table_name.first_name = temp_table.first_name, table_name.last_name = temp_table.last_name"], ["table_name.orderid, table_name.first_name, table_name.last_name"], ["temp_table.orderid, temp_table.first_name, temp_table.last_name"])

#ROLLBACK / COMMIT w INSERT
	
	# For inserting into a table you could produce errors and perform partial inserts.
	# To prevent this the rollback feature allows for all successful inserts to 
	# revert back to before the inserts started.  To call this feature simply add a 3rd param == true
	# Call inside your rescue the rollback and any logging
	# Then specify outside your rescue Error handling the commit.
	
	begin
		#your values inserting
		query.insert("TABLE_NAME", ["'#{value[0]}', '#{value[1]}', '#{value[2]}'"], true)
	rescue Exception => e
		p "FAILED ROLLBACK"
		query.rollback
		# Log the error message somewhere
	end

	query.commit

#APPEND

	#Similar to Insert except Appends
	query.append("TABLE_NAME", ["'#{value[0]}', '#{value[1]}', '#{value[2]}'"])

#UPDATE

	#Updates the values specified where columns = values
	#4th param indicates if you want to omitt the where clause or keep it
	$query.update("TABLE_NAME", ["column_one = 'John Smith'"], "column_one = 'Mark Smith'", false)
	$query.update("TABLE_NAME", ["column_one = 'John Smith'"], '', true)
	
#TRUNCATE

	#Truncates specified table
	query.truncate("TABLE_NAME")

#DELETE

	#Deletes values from specified table.  Allows you to specify specific rows
	$query.delete("reportingonly.oracle_query_test", "column_name = 'column_value'")

	#Deletes all rows
	$query.delete("reportingonly.oracle_query_test", '', "all")

#DROP

	#Drops a table 
	$query.drop("table TABLE_NAME", "table")

	#Drops Database (NOTE: Be careful using the database option. Make sure you want to drop your entire database first)
	$query.drop("database TABLE_NAME", "database")

#CREATE

	#Creates a new specified table
	$query.create("TABLE_NAME", [["column_one",'varchar (20 BYTE)'], ["column_two", 'NUMBER']])

#PROCEDURES
	
	#Runs any given defined procedure
	$query.procedure("MYPROCEDURE()")