我正在使用PLSQL创建一个基于查询另一个表来更新表的过程,并且我正在使用循环来实现此目的.对于测试,我暂时不使用过程代码,只是尝试使下面的脚本工作.但它不断抛出错误,包括"遇到符号"文件结束""或"无效的SQL语句",基于小调整.我哪里错了?
DECLARE CURSOR cur IS
SELECT * FROM Summary;
BEGIN
FOR rec in cur
LOOP
UPDATE Award
SET monthly_sales = (
SELECT COUNT(*)
FROM Sales
WHERE employee_id = rec.employee_id
AND to_char(Sales.SALES_DATE,'YY/MM')=to_char(SYSDATE,'YY/MM')
)
WHERE Summary.employee_id = rec.employee_id
END LOOP
END;
/
Run Code Online (Sandbox Code Playgroud) 我们的用例:
对于表格USERS:
如果用户处于非活动状态(列)超过该分钟,则更新所有行('N'列的设置值ACTIVE).'LAST_VISIT'60
Google帮助我找到了如何获取db中的当前时间(我使用Oracle):
SELECT sysdate FROM dual;
Run Code Online (Sandbox Code Playgroud)
然后我找到了如何找到两个日期之间的分钟差异的方法:
SELECT(date1 - date2)*1440
Run Code Online (Sandbox Code Playgroud)
看起来有点难看......但还可以.
现在,我正在努力将所有这些结合在一起:
UPDATE USERS u
SET ACTIVE='N'
WHERE SELECT((SELECT sysdate FROM dual) - u.LAST_VISIT)*1440 >60;
Run Code Online (Sandbox Code Playgroud)
能否请您查看我的最终查询.
好吗?或者,也许,可以优化它?
我有一个包含13列的表,其中有5列包含让我们说的字符串数据或VARCHAR数据.
现在我有一个字符串让我们说"abc".
我想编写一个sql查询来获取在这5列中包含此"abc"字符串的所有行."abc"可以是列数据的一部分列的数据.
我用过LIKE功能
SELECT * FROM table WHERE col1 OR col2 OR col3 OR col4 OR col5 LIKE '%abc%';
Run Code Online (Sandbox Code Playgroud)
但它没有起作用n回到了所有的行.
我MATCH也不知道如何使用函数,我在sql中表现不错.任何人都可以帮忙.
下面的SELECT语句的预期结果:
('2015-01-15',110,'John')
Run Code Online (Sandbox Code Playgroud)
下面有一些代码可以帮助我...
DECLARE @MyTableVar table(
arrival_date date,
nb_sales int,
name varchar(255)
)
insert into @MyTableVar values
('2015-01-15',121,'James'),
('2015-01-15',110,'John')
select
arrival_date,
MIN(nb_sales) as nb_sales,
name <<-- What should I put knowing I can't put MIN or MAX ?
from @MyTableVar
group by arrival_date
Run Code Online (Sandbox Code Playgroud) 我有2个表1- tbl_reaction这样:
?????????????????????????????????????????
? id ? condition ? phenomenon ? infor ?
?????????????????????????????????????????
? 1 ? abcd123 ? abcd123 ? abcd123 ?
? 2 ? wer ? wer ? wer ?
?????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
2- tbl_reaction_item像这样:
????????????????????????????????????
? reid ? substance ? type ? num ?
????????????????????????????????????
? 1 ? H2 ? income ? 2 ?
? 1 ? O2 ? income ? 1 ?
? 1 ? H2O ? outcome ? 2 ?
????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
什么是mysql查询来显示反应:
收入+收入=结果
2H2 + O2 …
我陷入了一个无法解决的小问题。
CREATE FUNCTION dbo.fntblPsmHaendlerDailyCostsinfodump(@pDateString varchar(8), @HaendlerID int, @TableName varchar(100),@CountryID int)
RETURNS table
AS BEGIN
RETURN select top 10 * from tblcountry
END
GO
Run Code Online (Sandbox Code Playgroud)
这给我一个错误-
“开始附近的语法不正确”。
我无法确定为什么会出现错误。
CREATE TABLE tbl_Patient
(
PatientID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
LabControlID AS Cast(Right(Year(getDate()),4) as varchar(4)) +'-' + RIGHT('00000' + CAST(PatientID AS VARCHAR(5)), 5),
SequenceID AS "--Codes to display date--"
,First_Name varchar(50)
,Last_Name varchar(50)
,Age int
,Male bit
,Female bit
,
)
Run Code Online (Sandbox Code Playgroud)
我想显示月和日 - 00000并在下面的示例中显示如下.
SequenceID
----------
Jan01-00001
Jan01-00002
Run Code Online (Sandbox Code Playgroud)
请指教.感谢:D
我有这个问题,我想在整数和字符串之间创建一个唯一的索引,但它给了我以下问题.我怎样才能完成这项工作?为什么不允许这样做?因为我实际上真的想要这个独特的组合,以确保数据库中没有存储双标签.
表'dbo.HostingReportGroups'中的列'Label'的类型无效,无法用作索引中的键列.
我用于此的模型如下:
public class HostingReportGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Index("UniqueCustomerAndLabel", 1, IsUnique = true)]
public int CustomerId { get; set; }
[Index("UniqueCustomerAndLabel", 2, IsUnique = true)]
public string Label { get; set; }
public virtual ICollection<HostingReportGroupList> HostingReportGroupLists { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行的迁移包含以下代码:
public partial class adding_unique_key_to_hosting_report_group : DbMigration
{
public override void Up()
{
CreateIndex("dbo.HostingReportGroups", new[] { "CustomerId", "Label" }, unique: true, name: "UniqueCustomerAndLabel");
}
public override void Down()
{
DropIndex("dbo.HostingReportGroups", "UniqueCustomerAndLabel"); …Run Code Online (Sandbox Code Playgroud) 我想用ddl触发器(在放置之前)创建一个备份表,并遇到以下问题.
发生第一次丢弃时没关系:a_backup表包含丢弃表的数据.但为什么我不能放弃另一张桌子?
ORA-01031:权限不足
create table b (x number);
Run Code Online (Sandbox Code Playgroud)
- 表B已创建.
create table a (x number);
Run Code Online (Sandbox Code Playgroud)
- 表A已创建.
create table a_backup as select * from a where 1 = 0;
Run Code Online (Sandbox Code Playgroud)
- 表A_BACKUP已创建.
create or replace trigger a_backup_tr
before drop
on database
begin
IF ora_dict_obj_name <> 'A' then
null;
ELSIF ora_dict_obj_name = 'A'
and ora_dict_obj_owner = 'TRANEE' then
insert into a_backup
select * from a;
ELSE null;
end if;
end;
/
Run Code Online (Sandbox Code Playgroud)
- 触发A_BACKUP_TR编译
-- 1
drop table a;
Run Code Online (Sandbox Code Playgroud)
- 表A下降.
-- 2 …Run Code Online (Sandbox Code Playgroud) 说我有两张桌子
CREATE TABLE Employees (
Employee_ID number(8),
Employee_Name varchar2(100) NOT NULL,
CONSTRAINT pk_EmployeeID PRIMARY KEY(Employee_ID));
CREATE TABLE Drivers(
Driver_ID number(8) NOT NULL,
Employee_ID number(8) NOT NULL,
CONSTRAINT pk_DriverID PRIMARY KEY (Driver_ID),
CONSTRAINT fk_EmployeeDataTwo FOREIGN KEY (Employee_ID) REFERENCES Employees(Employee_ID));
Run Code Online (Sandbox Code Playgroud)
如何使用查询来使用驱动程序中的外键来检查员工列表中的名称?例如
select employee_name
from employees
inner join drivers on employees.employee_name = drivers.employee_name;
Run Code Online (Sandbox Code Playgroud)
哪个不起作用
sql ×7
oracle ×4
sql-server ×4
t-sql ×3
mysql ×2
plsql ×2
c# ×1
database ×1
ddl-trigger ×1
function ×1
oracle11g ×1
php ×1
sql-function ×1
sql-update ×1
triggers ×1
vb.net ×1