Function |
It is a set of programming commands that returns a value. Functions can be used in command-line SQL statements, in PL/SQL code, and other functions. Observe that a function may return any type of value, while a stored procedure must return an integer value using the instruction RETURN. Es un conjunto de comandos de programación que regresa un valor. Las funciones pueden ser usadas como líneas de comando SQL, en código PL/SQL y en otras funciones. Observe que una función puede regresar cualquier tipo de valor, mientras que un procedimiento almacenado debe regresar un valor entero usando la instrucción RETURN. |
Function Arguments |
It is possible to pass one or more values to a function. A value passed to a function is called argument. The return value of the function usually depends on the value of the arguments you pass to the function as shown in the figure below. Es posible pasar uno o más argumentos a una función. Un valor que se pasa a una función se conoce como argumento. El valor que regresa la función depende usualmente del valor que se pasa a ésta como se muestra en la figura de abajo. |
Problem 1 |
kimberly > Create and test the function in Oracle. Cree y pruebe la función en Oracle. |
kimberly.sql |
CREATE OR REPLACE FUNCTION add5 ( input NUMBER ) RETURN NUMBER IS p_result NUMBER(5, 2) := 0; BEGIN p_result := input + 5; RETURN (p_result); END add5; / |
MSDOS: cmd.exe |
SQL> SELECT cost, add5(cost) FROM material; COST ADD5(COST) ---------- ---------- 1.5 6.5 2.5 7.5 3.53 8.53 7.5 12.5 9.87 14.87 |
Tip |
You can use the DUAL table to test any function. La tabla DUAL puede ser usada para probar las funciones. |
Problem 2 |
kimberly > Test the function of the previous problem using the dual table. Pruebe la función del problema anterior usando la tabla dual. |
MSDOS: cmd.exe |
SQL> SELECT add5(10) FROM dual; ADD5(10) ---------- 15 |
Problem 3 |
kimberly > Create and test the add5 function of the previous problems using Microsoft SQL Server. Cree y pruebe la función add5 de los problemas anteriores usando Microsoft SQL Server. |
Microsoft SQL Server |
USE kimberly; SELECT cost, dbo.add5(cost) AS price FROM material; |
kimberly.sql |
CREATE FUNCTION add5 ( @input DECIMAL(10, 2) ) RETURNS DECIMAL(10,2) AS BEGIN DECLARE @result AS DECIMAL(10, 2); SET @result = @input + 5.0; RETURN (@result); END GO |
Problem 4 |
kimberly > Create a function called multiply to multiply two numbers. Using: (a) Oracle, (b) Microsoft SQL Server. Cree una función llamada multiply para multiplicar dos números. Usando: (a) Oracle, (b) Microsoft SQL Server. |
MSDOS: cmd.exe |
SQL> SELECT name, 2 multiply(width, height) AS product 3 FROM item; NAME PRODUCT ---------- ---------- Book 6 TV 14 Chair 32 Bed 12 Table 36 Computer 2 CD 30 Printer 3.52 Picture 120 Speaker 3 10 rows selected. |
Microsoft SQL Server |
USE kimberly; SELECT name, dbo.multiply(width, height) AS product FROM item; |
Problem 5 |
kimberly > Modify the script to add and populate the table temperature as shown below. Using: (a) Oracle, (b) Microsoft SQL Server. Use the IDENTITY command in the TEMPERATURE_ID column in Microsoft SQL Server. Modifique el script para agregar y llenar la tabla temperature como se muestra debajo. Usando: (a) Oracle, (b) Microsoft SQL Server. Use el commando IDENTITY en la columna TEMPERATURE_ID en Microsoft SQL Server. |
MSDOS: cmd.exe |
SQL> SELECT * FROM temperature; TEMPERATURE_ID VALUE -------------- ---------- 1 -40 2 32 3 68 4 212 |
Microsoft SQL Server |
SELECT * FROM temperature; |
Problem 6 |
kimberly > Create a function to convert temperatures called to_celsius (see formula below). The function should take a Fahrenheit temperature and returns the equivalent Celsius temperature. Using: (a) Oracle, (b) Microsoft SQL Server. Cree una función para convertir temperaturas llamada to_celsius (vea la fórmula de abajo). La función debe tomar un valor en grados Fahrenheit y regresar un valor en Celsius. Usando: (a) Oracle, (b) Microsoft SQL Server. |
MSDOS: cmd.exe |
SQL> SELECT value, to_celsius(value) AS celsius 2 FROM temperature; VALUE CELSIUS ---------- ---------- -40 -40 32 0 68 20 212 100 |
Microsoft SQL Server |
SELECT value, dbo.to_celsius(value) AS celsius FROM temperature; |
Tip |
It is possible to delete any function using the command DROP FUNCTION. Es posible borrar o eliminar cualquier función usando el comando DROP FUNCTION. |
Problem 7 |
Indicate whether the next statement is true or false: A stored procedure and a function are basically the same and can be used without any distinction. Diga si es cierto o falso: Un procedimiento almacenado es lo mismo que una función y por lo tanto pueden ser usados sin ninguna distinción. |
Problem 8 |
kimberly > Create a function to compute the weight of each item. Create, then, another function to compute the item price. Remember that the weight of each item is the product of its volume by its density. While the item cost is the item weight multiplied by the item material cost. Using: (a) Oracle, (b) Microsoft SQL Server. Cree una función para calcular el peso de cada artículo. Cree entonces otra función para calcular el precio de éste. Recuerde que el peso de un artículo es su volumen por su densidad. Mientras que el costo es el peso del objeto multiplicado por el precio del material que está hecho. Usando: (a) Oracle, (b) Microsoft SQL Server. |
MSDOS: cmd.exe |
SQL> SELECT name, get_weight(item_id) AS weight, 2 get_cost(item_id) AS cost 3 FROM item; NAME WEIGHT COST ---------- ---------- ---------- Book 2 3 TV 127 318 Chair 101 357 Bed 30 225 Table 114 402 Computer 121 1194 CD 27 68 Printer 9 23 Picture 7 11 Speaker 11 39 10 rows selected. |
Microsoft SQL Server |
SELECT name, dbo.get_weight(item_id) AS weight, dbo.get_cost(item_id) AS cost FROM item; |