pl/sql table definition

In PL/SQL (Oracle) how does one obtain information about a table (e.g. column names, column datatypes)?

I am not able to run queries on the database from a 3rd party application (like Oracle SQL Developer).  I can run the queries from within my code, however (C#.NET 4.0).

Could I run this definition query and then temporarily export the text to a Label on the page?
adskarcoxAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

slightwv (䄆 Netminder) Commented:
PL/SQL is Orale's procedureal code.  You just need SQL.

select column_name, data_type from user_tab_columns where table_name='YOUR_TABLE_NAME';

There are other columns in that view that describe, precision etc...

If you are using sqlplus or compatible tool:
describe your_table_name;
0
adskarcoxAuthor Commented:
slightwv - thank you for the detailed reply.  I had to edit my initial question, however, to include a limitation I am facing.  Could you take a look at the additions and assist?  Thanks.
0
slightwv (䄆 Netminder) Commented:
How are you connecting with .Net that you cannot use sqlplus or similar tool?

>>Could I run this definition query and then temporarily export the text to a Label on the page?

You can do whatever you want with the resultset.
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

adskarcoxAuthor Commented:
Thanks for the reply.  What code would one use to send this text to a label?

If you are not familiar with ASP.NET, here is some sample code:

MyLabel.Text = "some text to send to label";

I'm not sure how to query and grab the string that I would assign to the label as listed above.
0
slightwv (䄆 Netminder) Commented:
I am familiar with .Net.

What data access provider are you using?  I suggest Oracle's ODP.Net.

You are asking for several rows and columns to be returned from the query.  What single value do you want in the label?

I suggest you use a gridview or old datagrid.  Then you just bind the datasource to a datareader.

If you can explain your expcted results better, I'll do what I can to assist.
0
schwertnerCommented:
You can run the query from every environment that can connect to Oracle. Almost evry framework is able to connect to Oracle.
0
adskarcoxAuthor Commented:
Thanks for the information.  My goal is to get all of the column names and column data types for this table.  I need some data from it, but can't query it due to not having this information about the table structure.

I am using...

using Oracle;
using Oracle.DataAccess.Client;
using System.Data;

OracleConnection oraConn = new OracleConnection(ConfigurationManager.ConnectionStrings["MY_CONN"].ConnectionString);
                OracleCommand oraCmd = new OracleCommand(sqlstmt1, oraConn);
                oraCmd.CommandType = CommandType.Text;
0
slightwv (䄆 Netminder) Commented:
Still not sure why you cannot use sqlplus but OK.

I'll work on a quick C# example.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
adskarcoxAuthor Commented:
I figured out how to connect to the database with a connection tool, but you assistance helped.  Thanks!
0
slightwv (䄆 Netminder) Commented:
Glad you were able to get the information you needed.

Since I had a close VB.Net example, I figured I would go ahead and tweak it and post it.

Maybe you or a future reader of this question can make use of it.


<%@ import namespace = "System" %>
<%@ import namespace = "System.Data" %>
<%@ import namespace = "Oracle.DataAccess.Client" %>
<%@ import namespace = "Oracle.DataAccess.Types" %>

<html>
<title>Gridview Sample</title>

<body>

<script language="vb" runat="server">

	sub getdata(sender as object, e as eventargs)
		Dim con As New OracleConnection("User Id=bud;Password=bud;Data Source=bud;") 

		Dim cmd as OracleCommand = new OracleCommand()
		cmd.Connection	= con
		cmd.CommandType	= CommandType.Text
		cmd.commandText	= " select  column_name, data_type, data_length, data_precision from user_tab_columns where table_name=:table_name "

		Dim param1 as OracleParameter = cmd.Parameters.Add("table_name", OracleDbType.varchar2, _
			50, UCase(table_name.text), ParameterDirection.Input)

		try
			con.open()

        	genericDataGrid.DataSource = cmd.executeReader()
        	genericDataGrid.DataBind

		catch ex as exception

			response.write("Error: " & ex.message)

		finally
			con.close()
			cmd.Dispose()
		end try

	end sub
</script>

<form runat="server">

Table name: <asp:textbox id="table_name" columns="40" runat="server" />
<asp:button id="runit" text="Go" onclick="getdata" runat="server" />
<br/>
<br/>
<asp:gridview id="genericDataGrid" runat="server" />
</form>
</body>
</html>

Open in new window

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Query Syntax

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.