Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/64: Рейтинг темы: голосов - 64, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 25
1

ERROR: 42601: syntax error at or near

29.03.2017, 23:23. Показов 13266. Ответов 1

Author24 — интернет-сервис помощи студентам
Работаю через C# с функцией plpgSQl, но при использование её выдает Ошибку " ERROR: 42601: syntax error at or near ","".
Пожалуйста, помогите найти причину.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE OR REPLACE FUNCTION public."sp_CreateQuestionary"(
    IN _name CHARACTER VARYING,
    IN _family_name CHARACTER VARYING,
    IN _father_name CHARACTER VARYING,
    IN _num_phone BIGINT,
    OUT _pk_id_klient INTEGER)
  RETURNS INTEGER AS
$BODY$
BEGIN 
INSERT INTO QuestionaryTABL (Name, Family_name, Father_name, Num_phone) VALUES (_name, _family_name, _father_name, _num_phone) returning Pk_ID_Klient INTO _pk_ID_Klient; 
END; 
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public."sp_CreateQuestionary"(CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, BIGINT)
  OWNER TO postgres;
Вот и сам код C#
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using Npgsql;
using System.Data.Common;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        private DataSet ds = new DataSet();
        private DataTable dt = new DataTable();
 
        NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=5432;User=postgres;Password=Leon7;Database=Questionary;");
            string sql = ("SELECT "Pk_ID_Klient", "Name" , "Family_name", "Father_name", "Num_phone"  FROM "QuestionaryTABL"");
        NpgsqlDataAdapter adapter ;
        NpgsqlCommandBuilder commandBuilder;
 
        public Form1()
        {
            InitializeComponent();
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            con.Open();
            NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(sql, con);
            con.Close();
            ds.Reset();
            adapter.Fill(ds);
            dt = ds.Tables[0];
            dataGridView1.DataSource = dt;
    
            dataGridView1.Columns["Pk_ID_Klient"].ReadOnly = true;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            
            // добавим новую строку
            DataRow newRow = dt.NewRow();
            newRow["Name"] = textBox1.Text.ToString();
            newRow["Family_name"] = textBox2.Text.ToString();
            newRow["Father_name"] = textBox3.Text.ToString();
            newRow["Num_phone"] = UInt64.Parse(textBox4.Text);
            dt.Rows.Add(newRow);
 
            con.Open();
            adapter = new NpgsqlDataAdapter(sql, con);
            commandBuilder = new NpgsqlCommandBuilder(adapter);
 
 
            // устанавливаем команду на вставку
            adapter.InsertCommand = new NpgsqlCommand("sp_CreateQuestionary(character varying, character varying, character varying, bigint)", con);
            // это будет зранимая процедура
            adapter.InsertCommand.CommandType = CommandType.StoredProcedure;
            // добавляем параметр для name
            adapter.InsertCommand.Parameters.Add(new NpgsqlParameter("_name", NpgsqlTypes.NpgsqlDbType.Char, 50, "Name"));
 
            adapter.InsertCommand.Parameters.Add(new NpgsqlParameter("_family_name", NpgsqlTypes.NpgsqlDbType.Char, 50, "Family_name"));
 
            adapter.InsertCommand.Parameters.Add(new NpgsqlParameter("_father_name", NpgsqlTypes.NpgsqlDbType.Char, 50, "Father_name"));
 
            adapter.InsertCommand.Parameters.Add(new NpgsqlParameter("_num_phone", NpgsqlTypes.NpgsqlDbType.Bigint, 0, "Num_phone"));
 
            // добавляем выходной параметр для id
            NpgsqlParameter parameter = adapter.InsertCommand.Parameters.Add("_pk_ID_Klient", NpgsqlTypes.NpgsqlDbType.Integer, 0, "Pk_ID_Klient");
            parameter.Direction = ParameterDirection.Output;
 
            adapter.Update(ds);
 
        }
 
 
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2017, 23:23
Ответы с готовыми решениями:

Ошибка SQL запроса #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax t
Помогите пожалуйста! CREATE TABLE `tickets` ( `id` int(4) NOT NULL auto_increment, `user`...

ERROR: syntax error at or near "PRIMARY"
как правильно задать первичный ключ? всё одна и та же ошибка выползает подскажите, пожалуйста ...

Ошибка You have an error in your SQL syntax
Подскажите пожалуйста, где ошибка в этом коде $ansesi = session_id(); $prv1 = mysql_query...

SQLException: Syntax error or access violation...
Привет. Проблема у меня значит такая, если я делаю запрос то у меня выводится вот такая шняга:...

1
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
30.03.2017, 22:57 2
Смотрите примеры по NpgsqlCommand в интернете. По-моему для вызова хранимой процедуры через NpgsqlCommand, в строке запроса нужно просто написать название этой процедуры. То есть вероятно должно быть так
C#
1
adapter.InsertCommand = new NpgsqlCommand("sp_CreateQuestionary", con);
0
30.03.2017, 22:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2017, 22:57
Помогаю со студенческими работами здесь

PDO - Syntax error or access violation: 1064 You have an error in your SQL syntax
public function getAllGategoryId(){ $sql = "SELECT id_cat FROM category ...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'"
#include<iostream> using namespace std; int main(){ int x, a = 0, b = 10; (cin >> x).get(); ...

Ошибка - Parse error: syntax error, unexpected T_VARIABLE как исправить?
$table = 'tp-20' $result = mysql_query('SELECT * FROM `$table` '); синтаксический ошибка как...

Ошибка Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRIN
При запуске локального сервера, выдает эту ошибку. Parse error: syntax error, unexpected...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru