假设我在PL/SQL中定义了一些数据类型:
TYPE foo_t IS RECORD (...);
TYPE foo_table_t IS TABLE OF foo_t INDEX BY BINARY_INTEGER;
TYPE bar_t IS RECORD (...);
TYPE bar_table_t IS TABLE OF bar_t INDEX BY BINARY_INTEGER;
Run Code Online (Sandbox Code Playgroud)
我是否可以编写一个能够接受从TABLE派生的任何数据类型(例如,a foo_table_t或a bar_table_t)作为参数的过程?该过程不需要知道表的行类型.一个简单的例子:
PROCEDURE remove_last(some_table ...) IS
BEGIN
some_table.DELETE(some_table.LAST);
END;
Run Code Online (Sandbox Code Playgroud) 我在mysql终端中用一组sql语句创建了一个事件,它运行正常.但是我想从php脚本创建这个事件.我的查询如下.
DELIMITER |
CREATE EVENT e_cart
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE
DO
BEGIN
SET @var_orderid = '';
SET @var_orderid = (SELECT orderid FROM order WHERE id=308);
IF @var_orderid = NULL THEN
UPDATE order SET status=1 WHERE id=308;
END IF;
END |
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
这导致: -
错误:SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在'DELIMITER |附近使用正确的语法 在第1行的CUR'上安排事件e_cart ON SCHEDULE
如何从php脚本执行此事件?
我编写了一个脚本,其中包含一个函数,该函数应循环遍历列表并返回给定所述列表中项目索引的值.我有一个名为的函数::find应该有2个参数:列表和项目位置.我不确定如何处理函数中的多个参数.该脚本如果我更换运行良好%LIST%与%MY_LIST%内环路和我删除了%MY_LIST%从参数列表THT传递给call :find,但我真的想知道如何传递多个参数.我认为它们只是作为整个字符串传递给函数...
@echo off
setlocal enableDelayedExpansion
cls
:: ----------------------------------------------------------
:: Variable declarations
:: ----------------------------------------------------------
set RETURN=-1
set MY_LIST=("foo" "bar" "baz")
set TARGET_INDEX=1
:: ----------------------------------------------------------
:: Main procedure
:: ----------------------------------------------------------
call :log "Finding item %TARGET_INDEX%..."
call :find %MY_LIST% %TARGET_INDEX%
call :log "The value is: %RETURN%"
goto Exit
:: ----------------------------------------------------------
:: Function declarations
:: ----------------------------------------------------------
:find
call :log "Called `:find` with params: [%*]"
set /a i=0
set LIST=%~1 & shift
for %%a …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行DO块,例如这个(从本论坛的帖子中复制)
DO $$
DECLARE x int;
BEGIN
x := 10;
RAISE NOTICE '>>>%<<<', x;
END;
$$
Run Code Online (Sandbox Code Playgroud)
但是会发生什么:
错误:"DO"处或附近的语法错误
SQL状态:42601
性格:1
没关系,我操作的DO块,DO语句根本不起作用(包括从doucment复制/粘贴的例子,我想知道可能是什么原因.请问有人帮助我吗?
非常感谢
我在oracle中创建了一个简单的过程.伪代码是
CREATE OR REPLACE
procedure update_summary
begin
delete from summary table;
make different calculations from different tables, insert values row by row in
summary table;
end;
Run Code Online (Sandbox Code Playgroud)
我希望这个程序每小时自动运行,因为如果我从我的应用程序的前端调用它,它安静的时间饥饿,用户认为该页面已被挂起.帮助将受到高度赞赏.
我正在寻找一种通过将任何查询输出转换为 HTML 表来在 MySQL(不带 PHP)中生成有效 HTML 代码的方法。
这是我到目前为止的进展,显然,我被卡住了。我希望我能得到一些帮助,谢谢。
1. "dynSQL" - 一个程序,用于获取任何 Select 查询并从中创建一个命名表
由于 MySQL 不允许在函数中进行动态查询,因此我调用了一个创建命名表tmp. 我不能使用临时表,因为 information_schema 中没有关于临时表的信息(在 mysql 5.6 中)
CREATE DEFINER=`root`@`%` PROCEDURE `dynSQL`(SQL_QUERY TEXT)
BEGIN
set @SQLQ := 'Drop table if exists tmp;';
PREPARE stmt from @SQLQ;
Execute stmt;
SET @SQLQ := concat('create table tmp as ',SQL_QUERY);
PREPARE stmt from @SQLQ;
Execute stmt;
-- I'm adding a auto increment ID column to be able to loop through the rows later
SET @SQLQ := "ALTER …Run Code Online (Sandbox Code Playgroud) 我的表中有一些波斯日期,sql server格式如下:
1394/05/14
Run Code Online (Sandbox Code Playgroud)
我必须使用stored procedure将其转换为公历日期,因为我需要将它与今天的日期进行比较。
有谁知道解决方案?我找到了一些代码,但它们在闰年等方面有问题。
顺便说一句,我有以下代码,C#但我认为我必须使用,sql server proc因为这个过程应该以固定的时间表执行。
public static DateTime ConvertToGregorianDate(string persianDate)
{
PersianCalendar pcalendar = new PersianCalendar();
int Year = int.Parse(persianDate.Split('/')[0]);
int Month = int.Parse(persianDate.Split('/')[1]);
int Day = int.Parse(persianDate.Split('/')[2]);
return new DateTime(Year, Month, Day, pcalendar);
}
Run Code Online (Sandbox Code Playgroud)
提前谢谢。
我正在尝试为我的数据库编写一些日志过程。我用以下语句创建一个过程:
create procedure prc_wirte_log (
in p_schema varchar(255),
in p_item varchar(255),
in p_message varchar(255)
)
begin
insert into weather.log (`schema`, item, message) values (p_schema, p_item, p_message);
end;
Run Code Online (Sandbox Code Playgroud)
我得到错误 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7 0.063 sec
为什么?MySQL Workbench的意思是Incomplet Statment: excepting ;在插入查询之后。
我能做什么?
我的问题是......为什么从varchar转换为int?我不确定它想要做什么
CREATE PROCEDURE #myTestProcedure
(
@TransId VARCHAR(15)
)
AS
BEGIN
DECLARE @Result VARCHAR(15);
WITH TestCTE (TransId, AdjRefTransId) AS
(
SELECT TRANSID, ADJREFTRANSID
FROM dbo.MyTable
WHERE TRANSID = @TransId
UNION ALL
SELECT pet.TRANSID, pet.ADJREFTRANSID
FROM dbo.MyTable AS pet
JOIN TestCTE
ON TestCTE.ADJREFTRANSID = pet.TRANSID
)
SELECT @Result =
(
SELECT MAX(MyResult)
FROM dbo.MyOtherTable
WHERE TRANSID = TestCTE.TRANSID
)
FROM TestCTE
WHERE TestCTE.ADJREFTRANSID = ''
RETURN @Result
END
EXEC dbo.#myTestProcedure @TransId = 'MyTransId'
Run Code Online (Sandbox Code Playgroud)
错误:
Msg 245, Level 16, State 1, Procedure #myTestProcedure …Run Code Online (Sandbox Code Playgroud) 我正在使用雪花云数据库,请帮我提供一个工具来调试程序或功能。
procedure ×10
mysql ×2
oracle ×2
plsql ×2
sql ×2
sql-server ×2
batch-file ×1
c# ×1
events ×1
function ×1
generics ×1
html ×1
mariadb ×1
parameters ×1
php ×1
plpgsql ×1
postgresql ×1
snowflake-cloud-data-platform ×1
syntax ×1
t-sql ×1
windows ×1