我创建了一个函数来传递一个字符,并返回以接受字符开始的员工姓名计数。问题是,当我使用PLSQL块执行PLSQL函数时,出现“PLS-00201:必须声明标识符‘G’”
我已经使用select语句执行了函数,并且成功显示了输出,但当我尝试使用PLSQL块执行函数时,出现错误:PLS-00201:必须声明标识符“G”
create or replace function charcount(v_char in varchar2)
return varchar2
is
v_character number;
begin
select count(*) into v_character from employees where substr(First_name,1,1)= v_char;
return v_character;
end;
使用PLSQL块执行PLSQL函数:
declare
v_char char;
v_count number;
begin
v_char:=&v_char;
v_count:=charcount(v_char);
dbms_output.put_line(v_count);
end;
输入替代变量
v_char=G.
output=11.
您需要使用
declare
v_char varchar2(1) := '&textinput';
v_count number;
begin
v_count := charcount(v_char);
dbms_output.put_line(v_count);
end;
注意,在PL/SQL中,您可以在声明变量时分配一个值,这样可以节省以后的步骤。
我还将char
更正为标准Oracle字符串类型varchar2
。
为了可读性,我更喜欢在赋值运算符的两侧留一个空格。我发现x:=y通常比x:=y更可读。此外,我认为缩进的行业标准是2或4(我个人不喜欢2),任何小于或大于2的东西都看起来不必要的奇怪。
在你的职能范围内,你可以考虑改变
where substr(first_name,1,1) = v_char;
到
where first_name like v_char||'%';
利用first\u name上的任何索引。(它还允许您传递多个字符的字符串。)
顺便说一句,通常的惯例是为变量使用前缀v(v表示变量,有时为局部变量,有时为l),并为参数(通常为p,有时为in)。
将所有这些结合在一起可以得到:
create or replace function charcount
( p_matchstring in varchar2 )
return varchar2
is
l_num_matching number;
begin
select count(*) into l_num_matching
from employees
where first_name like p_matchstring||'%';
return l_num_matching;
end charcount;
来自SQL*Plus或其他支持替换变量的客户端的调用:
SQL> declare
2 v_char varchar2(1) := '&textinput';
3 v_count number;
4 begin
5 v_count := charcount(v_char);
6 dbms_output.put_line(v_count);
7 end;
8 /
Enter value for textinput: A
10
甚至只是
begin
dbms_output.put_line(charcount('&textinput'));
end;
或者(使用SQL*Plus执行命令-尽管这不是SQL或PL/SQL的一部分):
exec dbms_output.put_line(charcount('&textinput'))
或SQL标准call
语句:
call dbms_output.put_line(charcount('&textinput'));
我有一个使用函数的string参数并传递给返回最长单词的函数的代码。 我想知道是否可以使用,然后使用索引访问每个字母表,这样我就可以知道字符串中有多少个单词,然后比较它们,这样我就可以返回最长的单词。 我是这样开始的。它与典型数组很好地工作,但典型数组需要预定义的大小。
更新-此问题的上下文为TypeScript 1.4之前的版本。从那个版本开始,我的第一个猜测就得到了语言的支持。请参阅答案的更新。 我可以声明是一个接受字符串并返回字符串的函数: 我可以将声明为字符串数组: 如何将声明为“接受字符串并返回字符串的函数”数组? 我的第一个猜测是: 这似乎是一个语法错误。如果我去掉额外的括号,那么它是一个从字符串到字符串数组的函数。
有没有一个标准的方法来做这件事?我说得太离谱了吗? 谢谢你的帮助!
我试图将字符串参数传递给JavaScript函数。出于某种原因,它只能获取整数。我在这里只放了字符串的语法,因为我知道这是个问题,因为它与int一起工作。 发送函数内的代码: 最终,我希望用计数器的值调用HTML页面上的以下函数,如上图所示: 正如我提到的,当我发送int时,javascript文件会发出警报,但当我发送字符串时不会做出反应。
我试图使用Apache和MySQL XAMPP数据库为我的论坛建立一个登录页面,但它多次返回回显字符串,我知道它会遍历数据库中的所有行,检查是否为真,它返回的是“无效的用户名或密码!”直到找到正确的登录信息,然后返回“welcome”(欢迎)。 它是如何做到的,它只返回一个不正确的和正确的字符串?。
给定一个字符串和一个非空子字符串,递归计算以该子字符串开始和结束的最大子字符串,并返回其长度。 我所做的没有返回正确的长度。但是因为我保存了所有可能的子字符串,所以我可以确定长度。时间复杂度应该是线性的:O(n)。 这是我尝试过的: