标签: dynamic-sql

带有动态 SQL 查询的游标

我正在尝试使用游标进行动态查询,我想为数据库上的每个表创建文件组,我有这个:

DECLARE @name VARCHAR(50)
DECLARE @query VARCHAR(50)

DECLARE vend_cursor CURSOR
    FOR SELECT name FROM sys.tables order by name asc

OPEN vend_cursor
FETCH NEXT FROM vend_cursor;  

WHILE @@FETCH_STATUS = 0   
BEGIN   

    PRINT 'FG_'+@name
    FETCH NEXT FROM vend_cursor INTO @name;  
END   

CLOSE vend_cursor   
DEALLOCATE vend_cursor
Run Code Online (Sandbox Code Playgroud)

打印是因为这样我就可以看到文件组名称的样子,但我想添加以下内容: ALTER DATABASE AdventureWorks2012 ADD FILEGROUP FG_filegroupname

我知道我必须使用“exec sys.sp_executesql”,但是如何将其添加到我的查询中?提前致谢

sql sql-server dynamic-sql cursor

0
推荐指数
1
解决办法
8952
查看次数

如何正确调用包含动态 SQL 的 PL/SQL 函数?

我写了一个 PL/SQL 函数:-

CREATE OR REPLACE FUNCTION register_driver1(driver_name IN VARCHAR, pass_word IN VARCHAR) RETURN NUMBER AS
sql_stmt VARCHAR2(200);
driver_id NUMBER;
new_view_name VARCHAR(50);
BEGIN

    sql_stmt := 'CREATE USER '||driver_name||' identified by '||pass_word;

    EXECUTE IMMEDIATE sql_stmt;

    sql_stmt := 'grant create session to '||driver_name;

    EXECUTE IMMEDIATE sql_stmt;

    driver_id := driver_ids.nextval;
    new_view_name := 'vehicle_'||driver_name;

    sql_stmt := 'CREATE VIEW '||new_view_name|| ' AS SELECT Model, Seats, reg_no FROM Vehicle WHERE(d_id='||driver_id||')';

    EXECUTE IMMEDIATE sql_stmt;

    sql_stmt := 'CREATE OR REPLACE TRIGGER reg_vehicle 
                 INSTEAD OF INSERT ON '||new_view_name||
               ' …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql dynamic-sql

0
推荐指数
1
解决办法
257
查看次数

动态 SQL 中表名的语法错误

我在 SQL Server 中编写了一个存储过程来检查数据是否存在于几个表中,如果不存在则查询将失败,但如果数据存在则它将在表 3 中插入​​一些数据。但我看到我得到了一个我通过变量传递的数据库名称错误。以下是错误消息。

消息 208,级别 16,状态 1,第 65 行
无效的对象名称“EMR-Integration-DEV.dbo.EMR_ADF_Variables_test”

这是我的存储过程:

CREATE PROCEDURE InsertData
    @Client_Id INT,
    @EMR_Id INT,
    @Client_Name NVARCHAR(255),
    @EMR_Name NVARCHAR(255),
    @DB_Name NVARCHAR(255)
AS
BEGIN
    DECLARE @Full_Table_name NVARCHAR(255);
    SET @Full_Table_name = @DB_Name + '.dbo.Variable_Table_Name'; 

    -- Check if values exist in tables in the Reference database
    IF NOT EXISTS (SELECT 1 FROM Dim.Client_table WHERE ClientId = @Client_Id AND StagedName = @Client_Name)
    BEGIN
        PRINT 'Error: Client does not exist.';
        RETURN;
    END

    IF NOT EXISTS (SELECT 1 FROM  [dbo].[EMR] …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server dynamic-sql

0
推荐指数
1
解决办法
87
查看次数

00984. 00000 - "这里不允许列"

我试图创建以下PL/sql但收到错误

创建新的匿名PL/SQL块:

  • 首先,从employees表中选择员工总数,平均工资,最高工资和最低工资到PL/SQL变量.平均工资应四舍五入为整数

  • 然后使用以下列创建表统计信息:

    the_date   DATE,                                        
    emp_num NUMBER                              
    avg_sal   NUMBER                                    
    max_sal   NUMBER                                
    min_sal   NUMBER          
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后使用上面提到的PL/SQL变量将今天的日期,员工总数,平均工资,最高工资和最低工资的值插入统计表中

  • 最后在屏幕上打印.

我的代码:

DECLARE
 v_emp_no Number;
 v_av_sal Number;
 v_mx_sal Number;
 v_mn_sal Number;
BEGIN
 SELECT count(employee_id) as total_emp, ROUND(AVG(salary))as avg_sal, MAX(salary)as max_sal, MIN(salary)as min_sal
 INTO v_emp_no, v_av_sal, v_mx_sal, v_mn_sal
 FROM employees;
 EXECUTE IMMEDIATE 'CREATE TABLE stats (the_date DATE, emp_num NUMBER, avg_sal NUMBER, max_sal NUMBER, min_sal NUMBER)';
 EXECUTE IMMEDIATE 'INSERT INTO stats values (sysdate, v_emp_no, v_av_sal, v_mx_sal, v_mn_sal)';
 EXECUTE IMMEDIATE 'DROP TABLE stats';
 DBMS_OUTPUT.PUT_LINE('Today our company has '||v_emp_no||' …
Run Code Online (Sandbox Code Playgroud)

oracle plsql dynamic-sql

-2
推荐指数
1
解决办法
3180
查看次数

什么:1表示动态sql

vsql='select ename into y from emp where empno=:1'
Run Code Online (Sandbox Code Playgroud)

这是什么:1意思吗?

oracle plsql dynamic-sql

-2
推荐指数
1
解决办法
64
查看次数

动态 SQL 不存在绑定变量

我正在使用动态 sql 和 pl/sql,我的想法是至少为小尺寸表的行创建通用打印程序。为了使程序正常工作,我需要找到某些列的值,因此我使用了动态 sql。查找数据的函数具有以下代码:

function find_value(p_table_name string, p_id_name string, p_id string, p_field string) 
return varchar2
as
rresult varchar2(50) := '';
query_str varchar2(200);
type cur_typ is ref cursor;
c cur_typ;
inv_num number;
begin
  query_str := 'select '||p_field||' from '||p_table_name||' where '||p_id_name||' = '||p_id;
  open c for query_str using inv_num;
  loop
    fetch c into rresult;
    exit when c%notfound;
  end loop;
  close c;
  return to_char(rresult);
end; 
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

从第 2 行开始出错 - BEGIN --PROBNI_RED := JOB_PKG.GET_EMPLOYEE(100);
PPRINT.PRINT('EMPLOYEES','EMPLOYEE_ID',100); 结尾; 错误报告 - ORA-01006:绑定变量不存在 ORA-06512:在“ORA01.PPRINT”,第 14 …

sql plsql dynamic-sql

-3
推荐指数
1
解决办法
5315
查看次数

标签 统计

dynamic-sql ×6

plsql ×4

sql ×4

oracle ×3

sql-server ×2

cursor ×1

t-sql ×1