Updated March 13, 2023

## Introduction to SQL While Loop

While Loop in standard query language (SQL), is a control structure that lets us execute a set of statements/functions repeated until the loop invariant or loop condition returns false. It is really helpful when we are not sure how many times a set of statements should run. SQL While Loop starts with a given set of keywords like BEGIN in SQL server, or LOOP in PostgreSQL and ends with END or END LOOP. If the condition mentioned for the While Loop is true, then the body of the loop gets executed. Otherwise, the loop gets terminated.

### Flowchart of SQL While Loop

Let us understand the work flow of the loop with the flow chart mentioned below:

**Syntax**

The syntax for SQL While Loop server is as follows :

```
WHILE condition_expression BEGIN
{statements} END
```

The syntax for WHILE LOOP in MYSQL is as follows :

```
[label_name] WHILE condition_expression DO
{statements}
END WHILE [label_name]
```

The parameters used in the above syntax are as follows :

**WHILE condition_expression:**It is the condition expression that if evaluated to TRUE, the loop will be executed. If the condition evaluates to FALSE, the loop will be terminated.**Statements:**Defines the body of a while loop.

### Examples to Implement SQL While Loop

Here are some examples mentioned:

#### Example #1

Write a Fibonacci function using a SQL While loop in PostgreSQL:

In this example, we will try to create a Fibonacci series, which is nothing but a series of numbers where each new number is the sum of the first two numbers ahead of it.

For example,

0, 1,1, 2,3,5,8,13,21, …… etc.

**Code:**

```
CREATE OR REPLACE FUNCTION fibonacci(num integer) RETURNS integer AS $$
DECLARE
i integer = 0; j integer = 0; k integer = 1; BEGIN
IF (num < 1) THEN RETURN 0;
END IF;
WHILE(i < num)
LOOP
i = i+1;
SELECT k, j+k into j,k;
END LOOP; RETURN j; END;
$$ LANGUAGE plpgsql;
```

**Output:**

The SQL query has been successfully executed. Now, we may check if the function is created under the functions tab in the schema section of the browser.

Yes, indeed a new function called “Fibonacci” has been created successfully.

Next, we can check its functionality. Let us start with Fibonacci of the first 0 numbers.

`SELECT fibonnaci( 0 );`

**Output:**

The function returns 0, as mentioned in the function, i.e., if the value of the numbers is less than 1, then return 0. Now, let’s check the working of the WHILE loop as well.

`SELECT fibonnaci( 1 );`

**Output:**

The Fibonacci of the first 1 number is returned as 1, which is correct. Going ahead let us check for Fibonacci of the first 7 numbers.

`SELECT fibonnaci( 7 );`

**Output:**

The function returns 13 as Fibonacci of number 7, which is also correct.

#### Example #2

Write a function to find the sum of natural numbers using a while loop:

In this example, we will try to find the sum of first n natural numbers using a while loop. The formula for the same is n(n+1)/2.

**Code:**

```
CREATE OR REPLACE FUNCTION nautral_sum(num integer) RETURNS integer AS $$
DECLARE
sum integer = 0; i integer = 1; BEGIN
IF (num <= 1) THEN RETURN 1;
END IF;
WHILE(i <= num) LOOP
sum = sum + i; i = i+1;
END LOOP; RETURN sum; END;
$$ LANGUAGE plpgsql;
```

**Output:**

The SQL query has been successfully executed. Now, we may check if the function is created under the functions tab in the schema section of the browser.

Yes, indeed a new function called “natural_sum” has been created successfully. Next, we can check its functionality. Let us start with finding the sum of the first 5 natural numbers.

`SELECT public.natural_sum( 5 );`

**Output:**

Sum of first five natural numbers = (1+2+3+4+5) = 15.

Next, let’s try to find the sum of the first 10 and 100 natural numbers respectively.

`SELECT public.natural_sum( 10 );`

**Output:**

`SELECT public.natural_sum( 100 );`

**Output:**

#### Example #3

Write a function to find the factorial of a number using a while loop:

In this example, we will try to find out the factorial of a number using a while loop. Factorial of a number n is a product of all the numbers from 1 to n.

**Code:**

```
CREATE OR REPLACE FUNCTION factorial(num integer) RETURNS integer AS $$
DECLARE
factorial integer = 1; i integer = 1; BEGIN
WHILE(i <= num) LOOP
factorial = factorial*i; i = i+1;
END LOOP;
RETURN factorial; END;
$$ LANGUAGE plpgsql;
```

**Output:**

Let us check if the function has been created.

We can see that the function has been successfully created in the functions section of the concerned schema. Next, let us check the functionality of the factorial function by trying some examples. First, we can start by finding the factorial of ‘0’.

`SELECT public.factorial( 0 );`

**Output:**

The function returns 1, which is correct. Next, let us check the factorial of 5.

`SELECT public.factorial( 5 );`

**Output:**

The factorial function returns 120, which is also correct. The factorial of a number greater than 0 is the product of all the numbers before the number and number itself. Hence, the factorial of 5 will be given by :

5*4*3*2*1 = 120

Finally, let us try to find the factorial of 12.

`SELECT public.factorial( 12 );`

**Output:**

The function returns 479001600 which is also correct. The factorial of 12 is calculated as follows: 12*11*10*9*8*7*6*5*4*3*2*1 = 479001600

### Conclusion

While loop in SQL is a control structure, that executes a set of statements based on a condition. It executes a body of statements only if the condition expression mentioned is found to be TRUE. Otherwise, it terminates and exits the loop. WHILE LOOP helps perform repetitive and recursive tasks efficiently.

### Recommended Articles

We hope that this EDUCBA information on “SQL While Loop” was beneficial to you. You can view EDUCBA’s recommended articles for more information.