存儲過程調用函數
Ⅰ mysq 存儲過程怎麼調用自定義函數
call
或,如果在select中調用,直接寫func()
~~~~~~~~~~~~~~~~~~~~~~~
mysql> delimiter $$
mysql> CREATE FUNCTION isodd(input_number int) //創建函數
-> RETURNS int
-> BEGIN
-> DECLARE v_isodd INT;
->
-> IF MOD(input_number,2)=0 THEN
-> SET v_isodd=FALSE;
-> ELSE
-> SET v_isodd=TRUE;
-> END IF;
->
-> RETURN(v_isodd);
->
-> END$$
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE PROCEDURE myProc(aNumber int) //創建mysql存儲過程
-> Begin
-> IF (isodd(aNumber)) THEN
-> SELECT ' is odd';
-> ELSE
-> SELECT ' is even';
-> END IF;
-> END$$
Query OK, 0 rows affected (0.02 sec)
Ⅱ 存儲過程中調用帶返回值的函數
如果是ACCESS、MySQL、SQL 2000 資料庫
SELECT * FROM tabel_ WHERE date < (now()-30)
資料庫都自帶很多函數的
Ⅲ oracle存儲過程中如何調用自定義的函數
oracle中調用函數是十分簡單的,存儲過車調用函數也是一樣的。例子如下:
create procere pro_name1
as
v_para varchar2(200):=『Im Danny';
begin
--without parameters case
pro_name2;
--with parameters case
pro_name3(v_para);
end;
Ⅳ mysql存儲過程怎麼調用自定義的函數
創建存儲過程
mysql> delimiter $ -- delimiter $是設置 $為命令終止符號,代替默認的分號,因為分號有其他用處.
mysql> create procere sp_test(IN pi_id int, OUT po_name varchar(10))
-> begin
-> select * from test.tb_test;
-> select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id;
-> end
-> $
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ; -- 恢復分號作為分隔終止符號
5.調用存儲過程
mysql> set @po_name='';
Query OK, 0 rows affected (0.00 sec)
mysql> call sp_test(1,@po_name);
Ⅳ function直接調用存儲過程
function調用存儲過程?你說的function不是js的吧。
c#的
public static System.Data.DataSet ProcDataSet(string connStringName, string cmdText, params SqlParameter[] cmdParms)
{
System.Data.SqlClient.SqlConnection conn = GetConnection(connStringName);
System.Data.SqlClient.SqlCommand cmd = new SqlCommand(cmdText, conn);
cmd.CommandType = CommandType.StoredProcere;
foreach (SqlParameter param in cmdParms)
{
cmd.Parameters.Add(param);
}
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(cmd);
System.Data.DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
Ⅵ oracle 中怎樣從函數中調用函數,怎樣從存儲過程中調用函數
oracle中調用函數是十分簡單的,存儲過車調用函數也是一樣的。例子如下:
createprocerepro_name1
as
v_paravarchar2(200):=『ImDanny';
begin
--withoutparameterscase
pro_name2;
--withparameterscase
pro_name3(v_para);
end;
Ⅶ oracle中運用存儲過程調用函數
我也來做,以下程序經過測試,正常獲取cost值,插入收銀信息表正常!!
--創建表
CREATE TABLE member_info(
memberid NUMBER,
memberlevel VARCHAR2(20),
memberdis NUMBER)
;
CREATE TABLE cost_info(
memberid NUMBER,
spend FLOAT,
COST FLOAT)
;
INSERT INTO member_info VALUES(1,'A',0.1);
INSERT INTO member_info VALUES(2,'A',0.2);
INSERT INTO member_info VALUES(3,'A',0.3);
INSERT INTO member_info VALUES(4,'A',0.4);
--創建函數
CREATE OR REPLACE FUNCTION function_mem(p_memeberid member_info.MEMBERID%TYPE,p_spend cost_info.SPEND%TYPE)
RETURN FLOAT
IS
v_cost cost_info.COST%TYPE;
v_memberdis member_info.MEMBERDIS%TYPE;
BEGIN
SELECT memberdis INTO v_memberdis FROM member_info WHERE memberid = p_memeberid;
v_cost := v_memberdis* p_spend;
RETURN v_cost;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END ;
--創建procere
CREATE OR REPLACE PROCEDURE proc_mem(p_memeberid member_info.MEMBERID%TYPE,p_spend cost_info.SPEND%TYPE)
IS
v_cost cost_info.COST%TYPE;
BEGIN
SELECT function_mem(p_memeberid,p_spend) INTO v_cost FROM al;
INSERT INTO cost_info VALUES(p_memeberid,p_spend,v_cost);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
dbms_output.put_line(SQLERRM);
END;
----執行procere
BEGIN
proc_mem(1,1000);
END;
Ⅷ oracle如何在函數中調用存儲過程
函數中調用存儲過程報錯,多半是由於函數的執行用戶,沒有授權insert 許可權。
Ⅸ oracle 存儲過程調用函數傳變數參數
首先,請單獨調試一下max_int這個函數,確保這個函數是正確的後,看一下調用時,name是否為其他類型的。從而導致異常的出現。