一般来说,我们都听说过编程语言中的函数或过程.但是,我发现我几乎可以互换地使用这些术语(这可能是非常错误的).
所以,我的问题是:
它们的功能,用途和用途有何不同?
一个例子将不胜感激.
我是最近的AI毕业生(大约2年),从事适度的操作.它已经落到我身上(主要是因为我是该部门的第一个"采用者")来创建一个基本的(阅读有用的?)C#编码标准文档.
我想我应该解释一下,我可能是最初级的软件工程师,但我期待着这项任务,希望我实际上可以生产出一半可用的东西.我已经对互联网进行了大量的搜索,并阅读了有关编码标准文档应该/不应该包含的内容的文章.这似乎是一个很好的地方,可以提出一些建议.
我意识到,我可能会打开一扇门,通往一个关于"最好的做事方式"的分歧.我既理解又尊重不可否认的事实,即每个程序员都有一个解决每个任务的首选方法,因此我不打算写任何如此严厉的禁止,以至于扼杀个人风格,而是试图获得一般方法并达成一致标准(例如命名约定),以帮助使个人代码更具可读性.
所以这里......任何建议?有没有?
我正在学习Clojure,我正在尝试定义一个函数,该函数接受可变数量的参数(一个可变函数)并将它们相加(是的,就像+过程一样).但是,我不知道如何实现这样的功能
我能做的一切是:
(defn sum [n1, n2] (+ n1 n2))
当然,此功能仅需要两个参数和两个参数.请教我如何接受(和处理)未定义数量的参数.
如何从命令行调用存储过程?
我有一个程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertEvent`(IN `dateTimeIN` DATETIME)
NO SQL
BEGIN
SET @eventIDOut = NULL;
IF EXISTS(SELECT * FROM `events` WHERE `eventDate` = dateTimeIN) THEN
SELECT `eID` INTO @eventIDOut FROM `events` WHERE `eventDate` = dateTimeIN LIMIT 1;
ELSE
INSERT INTO `events` (`eventDate`) VALUES(dateTimeIN);
SET @eventIDOut = last_insert_id();
END IF;
SELECT CONCAT(@eventIDOut);
END
Run Code Online (Sandbox Code Playgroud)
我试过这个: mysql> CALL insertEvent(2012.01.01 12:12:12);
结果:
错误1064(42000):您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行的".01 12:12:12"附近使用正确的语法
还有这个: mysql> CALL insertEvent
-> 2012.01.01 12:12:12;
结果:
错误1064(42000):您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第2行的"2012.01.01 12:12:12"附近使用正确的语法
我正在尝试使用mySQL创建存储过程.此过程将验证用户名和密码.我目前正在运行mySQL 5.0.32,所以应该可以创建程序.
这是我用过的代码.我得到的只是一个SQL语法错误.
GO
CREATE PROCEDURE checkUser
(IN @brugernavn varchar(64)),IN @password varchar(64))
BEGIN
SELECT COUNT(*) FROM bruger WHERE bruger.brugernavn=@brugernavn AND bruger.pass=@Password;
END;
Run Code Online (Sandbox Code Playgroud)
先感谢您
是否可以在过程/函数中获取当前过程/函数的名称作为字符串?我想在编译时会有一些"宏"扩展.
我的情况是这样的:我有很多程序被给予记录,他们都需要从检查记录的有效性开始,因此他们将记录传递给"验证程序".如果记录无效,验证程序(所有程序都是同一个程序)会引发异常,并且我希望异常的消息不包括验证程序的名称,而是包含调用验证程序的函数/过程的名称程序(自然地).
就是,我有
procedure ValidateStruct(const Struct: TMyStruct; const Sender: string);
begin
if <StructIsInvalid> then
raise Exception.Create(Sender + ': Structure is invalid.');
end;
Run Code Online (Sandbox Code Playgroud)
然后
procedure SomeProc1(const Struct: TMyStruct);
begin
ValidateStruct(Struct, 'SomeProc1');
...
end;
...
procedure SomeProcN(const Struct: TMyStruct);
begin
ValidateStruct(Struct, 'SomeProcN');
...
end;
Run Code Online (Sandbox Code Playgroud)
如果我可以写出类似的内容,那么它会更容易出错
procedure SomeProc1(const Struct: TMyStruct);
begin
ValidateStruct(Struct, {$PROCNAME});
...
end;
...
procedure SomeProcN(const Struct: TMyStruct);
begin
ValidateStruct(Struct, {$PROCNAME});
...
end;
Run Code Online (Sandbox Code Playgroud)
然后每次编译器遇到{$ PROCNAME}时,它只是将当前函数/过程的名称替换为"宏"作为字符串文字.
更新
第一种方法的问题在于它容易出错.例如,由于复制粘贴,你很容易弄错:
procedure SomeProc3(const Struct: TMyStruct);
begin
ValidateStruct(Struct, 'SomeProc1');
...
end;
Run Code Online (Sandbox Code Playgroud)
或错别字:
procedure SomeProc3(const Struct: TMyStruct); …
Run Code Online (Sandbox Code Playgroud) 有没有可能做这样的事情?
SELECT
@z:=SUM(item),
2*@z
FROM
TableA;
Run Code Online (Sandbox Code Playgroud)
对于第二列,我总是得到NULL.奇怪的是,在做某事的同时
SELECT
@z:=someProcedure(item),
2*@z
FROM
TableA;
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.为什么?
有谁知道PL/SQL过程(在这种情况下是一个错误记录过程)是否可以获得调用它的函数/过程的名称?
显然,我可以将名称作为参数传递,但是进行系统调用或获取信息是很好的 - 如果没有从过程/函数调用它,它可能只返回null或其他东西.
如果没有方法可以做到这一点很好 - 只要有可能就好奇(搜索没有产生任何结果).
我正在编写一个PL/SQL过程,它根据输入变量执行选择,然后在select中为每个结果插入一行.由于我对PL/SQL的新意,我无法调试查询错误.我知道这一定很容易,但出于某种原因我被困在这里.谢谢你的帮助!
CREATE OR REPLACE PROCEDURE setup_name_map(ranking_id IN NUMBER, class_string IN VARCHAR2)
IS
BEGIN
FOR rec IN (SELECT NAME_ID FROM PRODUCT_NAMES WHERE NAME = class_string)
LOOP
EXECUTE IMMEDIATE 'INSERT INTO NAME_RANKING (NAME_ID, RANKING_ID) VALUES (' || rec.NAME_ID || ', ' || ranking_id || ')';
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
根据Oracle Developer Compiler ...'NAME_ID'是无效的标识符.我试过把它放在引号中,但没有骰子.它还抱怨循环索引变量'REC'的使用无效.任何帮助深表感谢.
我是MIPS语言的新手,我不明白MIPS汇编语言中的函数(过程)是如何工作的.这是但我会指出我的问题:
什么:
jal
jr
$ra
意思是mips语言和重要的事情
procedure ×10
function ×4
mysql ×3
plsql ×2
c# ×1
call ×1
clojure ×1
command-line ×1
compile-time ×1
delphi ×1
for-loop ×1
insert ×1
lisp ×1
mips ×1
oracle ×1
parameters ×1
select ×1
standards ×1
terminology ×1
variables ×1