在MySQL中,我有一个触发器:
BEGIN
IF (EXISTS(SELECT * FROM devices WHERE device_id = NEW.device_id)) THEN
SET NEW.id = NULL;
ELSE
INSERT INTO objects (object_type) VALUES ('3');
SET NEW.id = LAST_INSERT_ID();
END IF;
END
当该触发器(从objects表)获得新的id时,它会将该id插入到设备表的id列中。
当我提到它(例如PHP中的mysql_insert_
我正在尝试构建一个包含一些输入参数的查询。没什么值得注意的..。
并非所有参数都需要传递给查询。
如果一个参数不被传递给查询,那么它是否仍然必须作为NULL传递?
如果参数未被传递,我如何构建它以不包含参数?
所以说你有..。
IN name VARCHAR(30),
IN age VARCHAR(2),
IN address VARCHAR(50)
你只想按名字搜索..。
SELECT * FROM Table WHERE
(
NAME LIKE CONCAT(name, '%')
);
这似乎不起作用,因为年龄并没有过去。或者,如果名字和地址,而不是年
我有一个Insert存储过程,我在其中插入到两个表中。第二个表使用第一个表的Last_Insert_ID。下面是我的存储过程:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `new_user_create`(
IN oFarmName varchar(45),
IN oFirstName varchar(45),
IN oAddress1 varchar(45),
IN oCity varchar(45),
IN oState
我有一个结构如下的MySQL表: -------------
| id | name |
------------- 其中ID是int,auto_increment是varchar(255)。 因此,我需要将名称设置为使用数据库默认值(如果在insert请求后为空),如下所示: INSERT INTO users; id = 1
name = "User1" ..。它也应该与null一起工作: INSERT INTO users (name) VALUES (null); id=8232
name = "User8232" 而且,如果我们为name发送空值也
我有一个更新表的存储过程。并非所有字段都是必需的,有些字段可以是空白的。
例如,不需要标题,但当标题为空白时,我会得到一个错误
Dim ptitle As New SqlParameter("@title", SqlDbType.NVarChar, 20)
ptitle.Value = objFormat.CheckSQL(title)
myCommand.Parameters.Add(ptitle)
System.Exception } ex {“过程或函数'sp_UpdateUser‘期望参数’@‘未提供。”
如果数据字段是空的,
我有一个简单的存储过程,它从一个表中返回一个主键(所以它不是NULL)。
CREATE PROCEDURE spGetActiveUsers
AS
BEGIN
SELECT UserID FROM Users WHERE Active=1
END
ObjectResult<Nullable<int>> spGetActiveUsers();
但它永远不能在集合中返回空值。因此,要获得不可为空的int列表,我必须调用:
int[] results = context.spGetActiveUsers().Select(u => u.Value).ToArr
我正在进行一个项目,该项目从字符串中解析文本单元(引用为“ngram”),并将它们存储在MySQL数据库中。
在MySQL中,我有下面的过程,它应该存储在一个特定的数据集(表)中,如果它还不存在,并返回ngram的id:
CREATE PROCEDURE `add_ngram`(IN ngram VARCHAR(400), IN dataset VARCHAR(128), OUT ngramId INT)
BEGIN
-- try get id of ngram
SET @s = CONCAT('SELECT `id` INTO @ngramId FROM `mdt_
CREATE PROCEDURE `checkAdminAccess`
(
IN accountID INT
)
BEGIN
DECLARE staffID INT;
#DECLARE num INT;
SELECT StaffID INTO staffID
FROM staff
WHERE AccountID = accountID
AND IsAdmin = 1;
SELECT staffID;
IF (staffID IS NULL) THEN
CALL raise(1356, 'Admin access required.');
环境: MySQL 5.1,Linux
我有一个存储过程,它从一个输入值中计算几个值。这些值作为OUT参数返回。我想对每个行集调用这个过程,并将这些值显示为结果集中的列。这些值具有复杂的关系,因此不容易为每个值构造不同的函数。
问题是:如何获得参数以显示为表中的列?
到目前为止,我的情况如下:
DELIMITER $_$
DROP PROCEDURE IF EXISTS in_out;
CREATE PROCEDURE in_out (
IN s TEXT,
OUT op TEXT,
OUT opn INT,
OUT opd TEXT
我将日期存储在db中,如下代码所示
convert(varchar(10),GETDATE(),105)
现在我需要搜索值
ALTER PROCEDURE spr_tb_sales
@to_date date,
@from_date date
AS
BEGIN
SELECT *
FROM tb_sales_
WHERE [Sales Date] BETWEEN @from_date AND @to_date
END
如果传入的值为01-01-2014和10-01-2014,则会显示错误
Incorrect syntax near '-'.
我做error.help的地方
我在mysql中创建了一个表
create table test (id int primary key not null auto_increment, vs varchar(255) not null);
跑时
insert into test (vs) values (null);
它抛出一个错误:
ERROR 1048 (23000): Column 'vs' cannot be null
但是当我试图插入两行
insert into test (vs) values (null),(null);
它起了作用,其结果是:
mysql> select * from
我试图用phpmyadmin(v4.7.9)在MYSQL中创建一个存储过程(v5.7.21),有时会返回一个空的结果集。
CREATE DEFINER=`my_database`@`%` PROCEDURE `emptytest`(IN `_id` INT(11))
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
select * from my_table where id=_id
下一个电话是:
call emptytest(1);
当该id存在于表中时,此方法工作得很好:
id name
--------
1 bob
但在没有行可
我有一个在MySQL数据库中调用存储过程的方法:
public DataTable ExecuteSP_ReturnDataTable(DynamicGridAction pAction)
{
DataTable ret = new DataTable();
MySqlCommand wCmd = new MySqlCommand();
try
{
wCmd = new MySqlCommand(pAction.SPName);
我正在尝试学习一些新的MySQL语法的诀窍,并且遇到了麻烦。这应该很简单。
下面是手册:
但我一直有语法错误。这是我的例行公事
# Drop anonymous accounts, if any
USE mysql;
CASE (SELECT COUNT(*) FROM user WHERE User = '' AND Host = 'localhost')
WHEN 1 THEN
DROP USER ''@'localhost';
FLUSH PRIVILEGES;
END CASE;
错误是:
错误1064 (
我有一个存储过程,它接受一个部门名称,并以int的形式返回部门Id。我正在尝试使用该过程来确定具有指定名称的部门是否已经存在。我如何才能做到这一点呢?如果存储过程没有返回任何结果,那么表示的值是什么?它是空的吗?我是否应该使用单独的存储过程来确定部门是否已经存在?下面是我当前的存储过程:
@Department_Name varchar(100),
@Id int OUTPUT
AS
SET NOCOUNT ON
SELECT @Id = Id FROM Department
WHERE Name = @Department_Name
RETURN @Id