Archive

Archive for April, 2010

Bash Shell Scripting Tutorial

April 30th, 2010 No comments

Basics
This tutorial assumes that you already know how to log in to your UNIX machine, bring up the bash shell, and run basic commands such as ls and cat. Getting to this point is fairly easy, but unfortunately this is the level that most users stay at indefinitely. This tutorial is intended to help you start to learn the more advanced features of using a shell, and specifically bash, one of the most powerful shells available.

Please note that most of the command themselves are not explained; you can examine their functionality yourself by either reading their man page, or just experimenting with them to see what they do.

Redirection
Normally programs take input from our keyboard, and display the output to our screens. However, these are just the defaults – UNIX has the ability to redirect the input (commonly referred to as stdin, short for standard input) and output (commonly referred to as stdout, short for standard output).
Read more…

VN:F [1.9.22_1171]
Rating: 7.0/10 (4 votes cast)
VN:F [1.9.22_1171]
Rating: +2 (from 2 votes)
Categories: General, HowTo, Linux Tags: , , ,

if exists syntax in sybase

April 20th, 2010 1 comment

Below shows the if exists usage with examples in sybase

If exists (select record)
begin
sql statement 1
sql statement 2
end
else
begin
sql statement 3
sql statement 4
end

Example

Scripts that include constructs like the following may produce errors if the table described in the script does not include the specified column:

if exists (select 1 from syscolumns
where id = object_id("some_table")
and name = "some_column")
begin
alter table some_table drop some_column
end

In this example, some_column must exist in some_table for the batch to succeed.

If some_column exists in some_table, the first time you run the batch, alter table drops the column. On subsequent executions, the batch does not compile.

Adaptive Server raises these errors while preprocessing this batch, which are similar to those that are raised when a normal select tries to access a nonexistent column. These errors are raised when you modify a table’s schema using clauses that require a data copy. If you add a null column, and use the above construct, Adaptive Server does not raise these errors.

To avoid such errors when you modify a table’s schema, include alter table in an execute immediate command:

if exists (select 1 from syscolumns
where id = object_id("some_table")
and name = "some_column")
begin
exec ("alter table some_table drop
some_column")
end

Because the execute immediate statement is run only if the if exists() function succeeds, Adaptive Server does not raise any errors when it compiles this script.

You must also use the execute immediate construct for other uses of alter table, for example, to change the locking scheme, and for any other cases when the command does not require data copy.

VN:F [1.9.22_1171]
Rating: 7.0/10 (6 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 4 votes)

A common error with GROUP BY Clause

April 16th, 2010 No comments

A common error with groups is to try to get information which cannot properly be put in a group. For example,


SELECT sales_rep, emp_lname, count( * )
FROM sales_order
KEY JOIN employee
GROUP BY sales_rep

gives the error

column ‘emp_lname’ cannot be used unless it is in a GROUP BY.

SQL does not realize that each of the rows for an employee with a given ID have the same value of emp_lname. An error is reported since SQL does not know which of the names to display.

However, the following is valid:


SELECT sales_rep, max( emp_lname ), count( * )
FROM sales_order
KEY JOIN employee
GROUP BY sales_rep

The max function chooses the maximum (last alphabetically) surname from the detail rows for each group. The surname is the same on every detail row within a group so the max is just a trick to bypass a limitation of SQL.

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
Categories: SQL, Tips Tags: , , , , , , ,