我有一个while循环,我无法确定如何成功存储值。任何帮助将不胜感激。
a
我想要存储的值是create or replace
FUNCTION my_function(p_val IN varchar2)
RETURN SYS_REFCURSOR
AS
my_cursor SYS_REFCURSOR;
BEGIN
OPEN my_cursor FOR SELECT emp_name FROM employees
WHERE lower(emp_name) like lower(p_val||'%');
RETURN my_cursor;
END;
,我可以告诉循环中的值是正确的,但似乎无法正确存储值。
答案 0 :(得分:1)
另一种方法是认识到这是一个相对简单的递归关系:
n = 0; a = 21; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; e = 5; x = 60;
while n < x
a(end+1) = a(end) + f * y * (T - a(end)) / (q * z);
n = n + e;
end
这个计算也可以进行矢量化,但是如果你想要完全相同的输出,你需要小心一点:
n = 5:5:55; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; a0 = 21;
alpha = f * y * T / (q * z);
beta = (1 - f * y / (q * z)).^(0:length(n))
a = a0 * beta + alpha * [0 cumsum(beta(1:end-1))];
代码似乎在向量化时失去了清晰度(对我来说),所以在这种情况下我可能更喜欢循环。
答案 1 :(得分:0)
试试这个:
counter = 1;
n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60;
var = zeros(1,12);
while n < x
a = a + b;
c = y*(T-a)/z;
d = f*c;
b = d/q;
n = n + e;
var(counter) = a;
counter = counter+1;
end
我添加了一个名为var
的变量,它是一个存储a
值的向量。按顺序运行,我将它初始化为变量var = zeros(1,12);
的预期大小(这不是严格要求的,但建议使用。