传递SQL函数参数

时间:2014-01-07 09:28:15

标签: sql function parameters

我已经创建了一个计算不同数据的SQL函数,它看起来像这样:

Declare @parameter1 float, @parameter2 float, @parameter3 float, @parameter4 float

SET @parameter1 = 3
SET @parameter1 = 5
SET @parameter1 = 7
SET @parameter1 = 9

dbo.SqlFuntion(@parameter1, @parameter2, @parameter3, @parameter4)

现在这很好用,我的挑战是我希望从数据库表中检索我的参数,而不是手动声明它们。

所以我想要这样的东西:

 Select name, age, postal, weight from TableValues where ID = 1234 

 dbo.SqlFuntion(name, age, postal, weight)

任何人都可以告诉我如何做到这一点,而不宣布任何事情?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

Declare @parameter1 float, @parameter2 float, @parameter3 float, @parameter4 float

Select @parameter1 = name, @parameter2 = age, @parameter3 = postal, @parameter4 = weight
from TableValues where ID = 1234 

dbo.SqlFuntion(@parameter1, @parameter2, @parameter3, @parameter4)

答案 1 :(得分:1)

//您可以使用游标,它可以帮助您

DECLARE v_done INT DEFAULT FALSE;
DECLARE v_name VARCHAR(50);
DECLARE v_age DOUBLE;
DECLARE v_postal VARCHAR(10);
DECLARE v_weight DOUBLE;

DECLARE cur1_cursor CURSOR FOR SELECT name, age, postal, weight from TableValues where ID = 1234 ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE;

OPEN cur1_cursor;
    read_loop: LOOP

        FETCH cur1_cursor INTO v_name,v_age,v_postal,v_weight;

        IF v_done THEN
          LEAVE read_loop;
        END IF;

        SET @v_name = v_name;
        SET @v_age = v_age;
        SET @v_postal = v_postal;
        SET @v_weight = v_weight;

        dbo.SqlFuntion(@v_name, @v_age, @v_postal, @v_weight);  

END LOOP;