我有一个任务是使用游标编写一个函数,该函数接收电影标题,然后返回这部电影中涉及的演员的报酬。
我写了这样的东西:
DELIMITER $$
CREATE FUNCTION getPay(movieTitle varchar(90))
RETURNS int;
BEGIN
DECLARE P int;
DECLARE done int DEFAULT FALSE;
DECLARE payCursor CURSOR FOR
(SELECT A.pay FROM actors A JOIN movie M ON M.id=A.movie WHERE M.title=movieTitle);
DEC
我需要为游标编写一个动态查询,以获取表的索引名。
尝试1:
DECLARE @Cur AS Cursor
EXECUTE SP_EXECUTESQL N'SET @Cur = CURSOR fast_forward for
SELECT IndexColumn = i.name
FROM sys.indexes i
INNER JOIN sys.tables t ON t.object_id = i.object_id
我熟悉游标,但没有使用CTE的经验,也从未真正使用过它们,但有人建议它们是一个比游标更好的选择
为了尝试和理解CTE的逻辑,我编写了以下光标,我希望将其转换为CTE。有人能帮帮我吗?
DECLARE @CustomerID UNIQUEIDENTIFIER
DECLARE SalesOrderCursor CURSOR READ_ONLY
FOR
SELECT CustomerID FROM OrdersProcessed
OPEN SalesOrderCursor
FETCH NEXT FROM SalesOrderCursor INTO @CustomerID
WHILE @@FET
我正在编写以下代码块:
select companyid into compid from person where signedin = 1;
cursor getpending is select serviceid from servnego where companyid = compid and confirmed = 0;
open getpending;
loop
exit when getpending%notfound;
fetch getpending into servid;
select servname into s from service
我已经编写了一个要在Java中调用的存储过程。但我不认为它能够对我传递的查询做任何事情。下面是我的java代码:
String QUERY_LOCATION = "select (license_plate) as test from carInst( (select category_name from reservation where rid = ?) , (select lname from reservation where rid = ?))";
//PreparedStatement check_location = null;
这是我下面的代码,我得到了这个错误(在第24/8行: ORA-06550:第20行,第12列:pls-00201:标识符'A.ID‘必须声明),如下面的图像所示,当我尝试运行代码时。请如何正确地编写plsql代码(使用for循环)以获取每一行ID并将它们传递给过程?
BEGIN
DECLARE
p_id number(30);
p_status varchar(20);
BEGIN
for c in (
SELECT
a.ID,
a.STATUS
INTO
p_id,
p_status
from USER_C
我一直在编写一个存储过程,用于从表中选择一组ID,将结果集保存到游标中,然后循环游标,根据游标中焦点的ID更新表中的行。计划添加更多的条件语句,但到目前为止..
CREATE OR REPLACE PROCEDURE CHANGE_PESONAL_DETAILS
AS
CURSOR
person_cur
IS
select b.id
from blah1 b
inner join blah2 b2 on b.id = b2.fkid;
person_rec person_cur%ROWTYPE;
BEGIN
FOR person_rec in person_cur
我的桌子上有桌子的名字..。
我只需要选择空的表。
为此,我尝试编写游标。
DECLARE @Footprint VARCHAR(200)
DECLARE @query VARCHAR(200)
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT '[' + [SchemaName] + '].[FootprintBuildState]'
FROM [dbo].[vwAgencySchemas]
OPEN MY_CURSOR
FETCH NEXT FROM MY
我不知道这里出了什么问题,请帮帮忙。
我试图循环一组结果,并使用id's from集来执行另一个select查询。
DECLARE @MyCursor CURSOR;
DECLARE @ID int;
DECLARE @Name varchar(200)
BEGIN
SET @MyCursor = CURSOR FOR
SELECT ID, Name FROM UserGroups
OPEN @MyCursor
FETCH @MyCursor INTO @ID, @Name;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT
我在想如何使我的功能更有效率。另外,我认为update语句没有处理,因为它与同一表上的select语句在相同的循环迭代中发生。我想知道我应该如何编写这个函数才能有效地工作。当订单完成时,我在触发器中使用此函数。提前谢谢。
create or replace function get_gewicht_product(p_dieet_id number)
return number
is
cursor c_Rids
is
select recept_id
from relation_6
where dieet_id = p_di
我正在尝试使用嵌套在游标for循环中的for循环在PLSQL中执行趋势分析。目标是在5年内(2000-2013)内至少出演过8部电影的演员。
例如,期望的输出将是: Wahlberg,Mark在2009至2013年间出演了10部电影。下面是我收到的错误:
以下是我到目前为止正在使用的代码:
DECLARE
t movie.yr%TYPE;
actor_id actor.id%TYPE;
total INTEGER;
name actor.name%TYPE;
CURSOR c_actor IS
select *
from (select a
我在我的数据库中有这个表,我正在尝试选择所有的职业信息,包括它所具有的专业。
CREATE OR REPLACE TABLE School_Catalog (
school_id INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL UNIQUE,
creation_datetime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARACTER SET utf8mb4;
CREATE OR REPLACE
语法错误在哪里?
DECLARE irid INT DEFAULT 0;
DECLARE tmp_joinid INT DEFAULT 0;
DECLARE loopjoins_eof INT DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET loopjoins_eof = TRUE;
START TRANSACTION;
SET irid = (SELECT id FROM `tables` WHERE `adapter_id`=_aid AND `view_id`=_vid AND `name`=_tname);
我试图了解如何分页工作,就我所理解的极限偏移分页而言,这不是使用分页的最佳方法(主要原因是数据库总是动态更改)。
我想知道如何将限制偏移分页转换为基于游标的分页。
下面是我所做的限制偏移分页(工作很好)
SELECT *
FROM (
SELECT row_number() OVER (ORDER BY orders.id ) as rn,
orders.id, res.id
FROM orders_order orders
JOIN reserves_reserve res on res.order_id=ord
这是一个用Python编写的人脸识别项目。我正在尝试获取已保存在中的SQL数据库表中的信息。它是识别面孔,但没有显示的信息,如名称,id,滚动否。
Python代码:
my_cursor = conn.cursor()
my_cursor.execute("select Name from student where Id=" + str(id))
n = my_cursor.fetchone()
n = "+".join(my_cursor)
我如何不用CURSOR重构这些代码行?我是PL/SQL的初学者。任何帮助都将不胜感激。谢谢
DECLARE
CURSOR c_emps IS
SELECT employee_id
FROM bonus;
v_region HR.REGIONS.region_name%TYPE;
v_salary hr.employees.salary%TYPE;
BEGIN
FOR r_emps IN c_emps LOOP
SELECT reg.region_name, emp.salary
INTO v_region, v_salary
我是PL/SQL的新手,我需要连接两个表,并从bookid上连接的orders和books表中获取最近24小时的订单数据。下面是我尝试的方式,下面的解决方案,这是正确的编写方法吗?请帮帮忙谢谢
CREATE PROCEDURE test.books@state NVARCHAR(20)
AS
BEGIN
SELECT
b.orderid,a.bookid,b.date
FROM books a
INNER JOIN orders AS b ON a.bookid= b.bookid
where b.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
我有一些来自Oracle的代码。我想在SQL Server中执行类似的代码。
这是我当前的Oracle代码:
CREATE OR REPLACE PROCEDURE
NEW(V_IN IN VARCHAR2,
V_PATH
OUT VARCHAR2)IS
BEGIN
FOR ITEM IN(SELECT
V.A||'\'||T.B AS
V_PATH FROM TABLE1 T
INNER JOIN VIEW1 V ON
V.ID= T.FID WHERE
T.FID='12a')
如何在SQ
我一直在寻找一些关于如何获得这样的功能的一些答案。老实说,我发现的信息有一个最低程度的理解,这显然超出了我的理解范围,我希望有人能帮助我理解。
我有一个查询,它返回多个连接行:
select
V_FEEDBACK_FORM.TEAM_ID, MANAGER_USER, listagg(REF_NUMBER, '</ br>') within group (order by REF_NUMBER) as "REF_NUMBER"
from
V_FEEDBACK_FORM
lef
我在Mysql中使用php。我想知道查询中的查询到底出了什么问题,如果我不太习惯使用INNER,而更喜欢编写多个查询,那该怎么办?我是不是做错了什么,或者只是为了让它在视觉上听起来更好?
我的意思是。
$query="SELECT * FROM TABLE WHERE USER_ID=1";
$data=mysqli_query($dbc,$query);
$row=mysqli_fetch_array($data);
$query2="select * from TAble2 where some_id='{$row['user_id']}
我有一个包含成员I的表,但它们并不并发运行。
我必须如何遍历它们?
我有这个:
select mm.memberid, mm.aspnetuserid, mm.email
into #MemberIdsToDelete
from membership.members as mm
left join aspnet_membership as asp
on mm.aspnetuserid=asp.userid
left join trade.tradesmen as tr
on tr.memberid=mm.memberid
where a
我在PL/SQL中编写了一个过程,根据主键将数据从一个表插入到另一个表中。我的过程运行得很好,但是如果主键已经存在,我不知道如何更新表MAIN的列CODE_NUMBER。
实际上,我希望主表的行在有主键时得到更新,并在主键不存在时插入来自区域的数据。
DECLARE
variable number;
id number;
description varchar2 (100);
CURSOR C1 IS
select regions.REGION_ID variable
from regions;
BEGIN
FOR
SQL Server存储过程:
CREATE PROC proc1
AS
SELECT ename FROM employee
Oracle Server存储过程:
CREATE OR REPLACE PROCEDURE proc1
(
cv_1 IN OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cv_1 FOR
SELECT ename
FROM employee ;
END;
是否可以在Oracle和SQL Server中使用相同数量的参数和相同的支持数据类型来编写此过程?
如果可能的话,怎么做?那么如何同时从oracle和SQL Server调用呢?
我编写了这段SQL Server2008代码,以便对临时表中的每个值调用存储的proc。不幸的是,临时表中有超过660K的值,所以执行它会导致“内存不足”异常。有没有一种方法可以在不使用游标的情况下执行相同的任务?
DECLARE @cons_to_delete uniqueidentifier
DECLARE @DeleteCursor CURSOR
SET @DeleteCursor = CURSOR FOR
SELECT consumer_uuid FROM tmp_UuidsOfClientsToDELETE
OPEN @DeleteCursor
FETCH N
我在使用PL/SQL。在with子句中定义了临时表之后,我正在尝试使用for循环。但是,首先进行SELECT查询是错误的。
例如
WITH TMP1 AS (.....), TMP2 AS (......), TMP3 AS (......)
FOR R IN (SELECT DISTINCT ..... FROM TMP1 WHERE .....)
LOOP
SELECT .... FROM TMP2, TMP2 WHERE TMP2.... = R..... ....
我该如何做呢?
谢谢
我有两张桌子,父母和孩子。我正在做一个过程,它将以id作为输入,并给出两个表的输出。如果在表2中找不到一行,就会出现异常。
为此,我为select语句使用了一个游标,并在我的过程中将它作为out参数传递,但我不知道如何在游标的select语句中给出条件,以便它将检查作为输入提供的id,并显示两个表中的行。
代码:
create or replace procedure stu_proc
(st_id in student_main.stu_id%type,
st_cur out sys_refcursor)
is
cursor cur_st(st_id number) is selec
最近,我向我的ProjectID表中添加了一个新的外键约束( Invoice ),并试图更新Invoice表,以便外键与给定的一组记录匹配。
使用下面的查询,我能够找到匹配的记录。
SELECT
IV.InvoiceID, TA.ProjectID
FROM
Invoices IV
JOIN
TimeEntries TE on TE.InvoiceId = IV.InvoiceID
JOIN
Tasks TA ON TE.TaskID = TA.TaskID
我认为正确的方法是使用游标并遍历Tasks表中的所有记录,但我不知道如何继续。
到目前为止,这
我在我的表中添加了一个新列packageNo:
create table Packages(
id varchar(20) primary key, -- ok, I know :)
orderNo uniqueIdentifier not null,
orderlineNo int not null,
packageNo int not null default(0)
)
现在,我想用以下规则生成packageNo:
重新设置每个订单的排序顺序,排序行
我的问题是,我编写的脚本在testServer上的26500行中使用了15分钟。下面是:
set NoCount
我有一个sql存储过程,其中我使用一个游标,其中包含一组来自select语句的id,我使用这些id逐个遍历,使用游标将值传递到其他变量中,并使用这些变量进行sql join,.My问题是,当我执行此操作时,我会返回许多表,而我只需要返回一个表。
SET NOCOUNT ON
declare @BSVal as int
declare @GSVal as int
declare @mID as int
declare @qID as int
DECLARE M_Cursor cursor for
select
ms.MID,ms.QID
from vM As ms join QS
我有一个值的列表,即
in ('1xxx','12xx','21xx','98xx','00xx')
我想使用插入脚本。如何在Server中使用循环中的每个值编写for循环?我觉得有点像。
For value in ('1xxx','12xx','21xx','98xx','00xx')
select value
endloop;
,I‘我想简单地把这个
INSERT INTO [dbo].[TimeCard]
VA
我在Oracle中开发过程,我需要编写如下代码:
--
open curr1 for
select *
from table1
where key_field in (select key_field from tbl_keys where type = 1);
--
open curr2 for
select *
from table2
where key_field in (select key_field from tbl_keys where type = 1);
--
open curr3 for
select *
from table3
where key_field in
我正在编写PL/SQL过程。在这个过程的正文中,我如何使用两次相同的查询而不重写它?
为了简化,假设我有这个SQL查询:
SELECT *
FROM mytable
WHERE age > 18
是否有办法“储存它”,例如:
SELECT COUNT(*) INTO var1
FROM myQuery
我知道.作为关键字,但我知道它只能在当前语句中使用,我希望能够从不同的语句中调用它。
谢谢!
我们在距离我们的位置千里之外的DB上工作,我们想要检查我们在sql性能或传输方面是否有问题(我们不是db专家)。问题是-如何检查sql查询返回的数据的大小?有可能吗?假设我们有这样的查询:
SELECT a.col1, b.col2, c.col1
FROM a
INNER JOIN b on b.a_id=a.id
LEFT JOIN c on c.b_id=b.id
WHERE a.somecol='data';
需要将多少数据从dba传输到我们的应用程序?
我是一名Oracle开发人员,正在努力学习T-SQL。我有一个表,其中有一列(table_name)。我需要能够遍历所有行,并找到给定表的所有列。然后,我需要将结果输出到文件中。在Oracle中,以这种方式使用游标非常简单:
cursor my_curr is select table_name from my_table;
for x in my_curr loop
select column_name from user_tab_columns
where table_name = x.table_name;
utl_file ..... (writing result